C语言输入和输出问题。

[复制链接]
查看11 | 回复3 | 2010-8-15 10:08:06 | 显示全部楼层 |阅读模式
int i,a[11]={0},k;

for(i=1;i<=10;i++)

scanf("%d\n",&a);//应该输入10个数,为什么是11个?

for(i=1;i<=10;i++)

printf("%d\t",a);//应该输出10个数,但为什么把a[0]=0输出了?
真是搞不懂。呵呵。

回复

使用道具 举报

千问 | 2010-8-15 10:08:06 | 显示全部楼层
楼主还是太粗心咯!我给你解释解释吧! 首先,按你的定义,是有数组有十个元素,分别为a[0]...a[10],记住里面更本没有a[11]这个元素,11只代表元素的总个数!所以如果分别给这些元素赋值,那么for循环应该这样写for(i=0;i<11;i++),记住,这里是i<11,而没有等于11,如果是i<=11,那么从零开始实际上有十二个数的,相当于你把a[11]也当作元素处理啦!所以是错误的,不要那个等号!
现在来看看你的题目,你的第一个意思是不要给a[0]赋值,即a[0]仍然等于0,所以你的i从1开始,但是你的结束仍然要从11,所以应该这样写: for(i=1;i<11;i++),这样赋值就是从a[1]到a[10],当然你只有十
回复

使用道具 举报

千问 | 2010-8-15 10:08:06 | 显示全部楼层
你将数组初始化为a[11] = {0},数组a里就有11个数(a[0]~a[10]),并且都为0,并不是a[1]~a[10].应该写为a[10] = {0},表示a[0]~a[9] 10个数,并且都为0;for(i = 0;i <= 9,i++)
回复

使用道具 举报

千问 | 2010-8-15 10:08:06 | 显示全部楼层
scanf函数的格式控制中是不用加‘\n’的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行