首先,我知道这可能是新手,但我才刚刚开始。请尽量保持耐心。 我想创建一个函数,在找到数字“0”之前对所有数字进行求和。 例如。 “1230”应返回“6”。 但我不明白如何扫描整数数组。 这是我的代码,编译器显示“段错误(核心已转储)。 怎么了?
#include <stdio.h>
int main(){
int sum, i, x[1000];
printf("Insert a number");
scanf("%d", &x[i]);
sum=0;
for (i=0; x[i]!='0'; i++)
sum=sum+x[i];
printf("%d", sum);
return 0;
}
最佳答案
“0”是 char
,不是整数。你应该写x[i]!=0
但是char
可以自动转换为int
,所以编译 OK...但是 '0' 转换为 ASCII 代码,所以你的程序等于 x[i]!=48
并且您应该检查数组边界以避免数组中不存在 0 时出现错误。你应该写i<1000 && x[i]!=0
编辑:你的scanf也错了,scanf只能接受一个数字,而i没有被分配。我想您的意思是扫描整个字符串,然后将数字逐位相加。那么你应该使用char
并这样写:
int sum, i;
char x[1000];
scanf("%s", x);
for(int i=0; i<1000 && x[i]>'0' && x[i]<='9'; i++)
sum += (x[i] - '0');
关于c - 扫描整数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29245591/