(C语言)有如下程序:输出数组中的全部元素。

#include<stdio.h>
void main()
{
int a[10];
int i;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++) ← // 此句为何不能省略?意义何在?省略后为何

printf("%d",a[i]); // 输入什么都是 1245120?这个数又代表什么意思?

printf("\n");
}

第一个for语句,只管到scanf("%d",&a[i]); 读入数据。这个循环结束后,i的值已经是10.
第二个for语句,如果想每行输出一个数,应该管到printf("\n"); 此时,应该讲两个printf语句放到{ }中。这个程序第二个for实际上只管printf("%d",a[i]); 所有的数都显示在一行上。
第二个for管打印出数组中的数,因此不能省略。省略了打印的就是啊a[10]的值,而a[10]未曾定义。是内存中的内容。这是随机的。每次运行应该都不同。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-18
for(i=0;i<10;i++)
printf("%d",a[i]);
是一个语句
是循环输出数组0-9中的数
省略后,i=10
输出a[10],超出数组范围,其中的数是编译器初始化的,
你的编译器初始化为1245120追问

为啥省略后,i=10?前面有
for(i=0;i<10;i++)
scanf("%d",&a[i]);
这两句话呀!

追答

for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
printf("%d",a[i]);
}
这样写的话是每输入一个,就输出一个

没有大括号的话,for循环中只有scanf这一句
printf是在退出循环之后执行的
退出循环时 i 就等于10了

本回答被提问者采纳
第2个回答  2012-12-25
for(i=0;i<10;i++) ← // 此句为何不能省略?意义何在?省略后为何

这就就是用来循环以输出全部内容的啊,
没有这一句的话,此时i=10,a[10]应该溢出了
第3个回答  2012-12-25
1、printf函数一次只能打印一个,所以要用循环打印10次才能将a打印完毕;
2、经我的验证没有出现你说的问题,结果正确无误
第4个回答  2012-12-25
一楼正解。
相似回答