负数求和的代码总是输出不正确

原题

img


我的代码
#include
int main()
{
int a[10];
int i,sum=0;

for (i=1;i<=10;i++) {
    scanf("%d",&a[i]);
    if (a[i]<0) {
        sum+=a[i];
    }
}
printf("%d",sum);
return 0;

}
输出结果

img


为啥不对呀 检查了好多遍都没看出问题来

因为数组的索引是从0开始的,所以小于等于10就会为11超出10了,需要改为小于10

for循环中,i初始化,应该是0,这样你才能访问到数组的第一个元素

看了上面的记录,看得出来你很执着,是个程序猿好苗子。。。。哈哈。。。
根本原因是,scanf 并没有修改 a[10],所以,真正的a[10] 并不是你输入的10,你可以debug 看下

for循环中i应该从0开始
for(i=0;i<10;i++),否则数组会越界的!