
不只是一个i的问题,还有 scanf("%d",&a[10]); 应该改为 scanf("%d",&a[i]); 这两句应该用个for来循环 if(max<a[i]) max=a[i];
改成这样就对啦 for(i=0;i<10;i++) if(max<a[i]) max=a[i];
下面是经过我改的程序 main() { int a[10],i; int max=0; printf("input 10 num:"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); for(i=0;i<10;i++) if(max<a[i]) max=a[i]; printf("the max is %d\n",max); getch(); }
main() { int a[10],i; int max=0; printf("input 10 num:"); for(i=1;i<10;i++)//i=0 scanf("%d",&a[10]);//你这里输入了10个数
printf("\n"); //此时i=10
if(max<a[i])//那么这里max只和一个不合法的数(不存在a[10])比较,此处应为
max=a[i];//for(i=0;i<10;i++)if(max<a[i])max=a[i]; printf("the max is %d\n",max); }
哦,原来是这样的啊:)
为什么a[10]不行呢,我还是不太明白。我是不是太笨了呢,不过你的我已经看懂了。
谢所有帮我的人特别是神vLinux飘飘。
这下应该满意了吧?
顺便问下,你们也是这么晚睡的吗?
因为数组的下标是从0开始的,在程序开始时定义的int a[10] 说的是 整形数组a有10个整形变量,他们是a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 就这10个,所以没有a[10]。
哎,挨了骂还要耐心的回答问题,像我这样的好和尚难找啦~