【发布时间】:2021-11-08 02:00:44
【问题描述】:
我已确保在声明 i%a[i] == 0 中,i 和 a[i] 介于 1 和 100 之间。但是,我仍然收到此错误消息!
#include <stdio.h>
int main()
{
int n, m, x = 0, count = 0;
scanf("%d %d", &n, &m);
int a[n], b[m];
for(int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
for(int i = 0; i < m; i++)
{
scanf("%d", &b[i]);
}
for(int i = 1; i <= 100; i++)
{
if(i % a[i] == 0)
{
x++;
}
else if(b[i] % i == 0)
{
x++;
}
if(x == 2)
{
count++;
}
else
{
continue;
}
x = 0;
}
printf("%d", count);
return 0;
}
错误信息:
Program terminated with signal SIGFPE, Arithmetic exception.
#0 0x0000000000401113 in main () at Solution.c:23
23 if(i%a[i]==0){
【问题讨论】:
-
你在哪里确定
a[i]是非零的?为什么你从一个地方从 0 开始计数,而在另一个地方从 1 开始计数?为什么你的最后一个循环达到 100 而不是n和/或m? -
当 a[i] 或 b[i] 等于 0 时,你将不得不做一些不同的事情。
-
编辑问题以提供minimal reproducible example,包括重现问题的示例输入。
-
@interjay 它是问题陈述中给出的约束
标签: c loops for-loop variable-length-array