很简单的题,但用数组处理出现段错误?并不知道错在哪里
#include<stdio.h>
#define MAXN 1001
int main()
{
int a[MAXN];
int i = 0;
while (scanf("%d", &a[i]) != EOF)
{
if (a[i] == 250)
{
break;
}
i++;
}
printf("%d\n", i+1);
return 0;
}
因为题目中有提示说不知道一行有多少个数字输入(只是每个数的绝对值不会超过1000,不是数字的个数不超过1000),所以用数组可能会越界,比如输入1001个数都没有遇到数250就会数组越界,直接用一个int变量临时存储每个输入的值即可,修改如下:
#include<stdio.h>
#define MAXN 1001
int main()
{
// int a[MAXN];
int num;
int i = 0;
while (scanf("%d", &num) != EOF)
{
if (num == 250)
{
break;
}
i++;
}
printf("%d\n", i+1);
return 0;
}
看了题主的问题,问题应该说的是每个整数的访问是-1000 ~ 1000,前面也说了并不知道多少了,所以是数组越界的问题了。
你可以将 MAXN 设置的尽量大。
还有问题情继续反馈。
以下答案引用自GPT-3大模型,请合理使用:
。
#include<stdio.h>
#define MAXN 1001
int main()
{
int a[MAXN];
int i = 0;
while (scanf("%d", &a[i]) != EOF)
{
if (a[i] == 250)
{
break;
}
i++;
}
printf("%d\n", i+1);
return 0;
}
我觉得题目的意思是扔出一串数!而不是扔出很多串数,你现在这样是很多次数,而不是一次。
比如题目这串数是 1542507 回车 ,它只扔一次,你程序中i=0进循环,你通过a[i]==250去判断,你是找不到这串数中的250的,因为这串数等于1542507。所以你和题目的意思不一样。