| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 479 人关注过本帖
标题:[求助]一个奇怪的问题
只看楼主 加入收藏
syzldy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-29
收藏
 问题点数:0 回复次数:9 
[求助]一个奇怪的问题
我在做一个练习题的时候碰到的:
#include <stdio.h>
main()
{
int i;
int a[10];
int t;
for (i=0;i<10;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&t);
a[i]=t;
}
printf("这个数组各元素的值是:%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
printf(" %d %d %d %d %d\n",a[5],a[6],a[7],a[8],a[9]);
}
问题是:比如我输到第5个数的时候不小心输入了“3c”,就是数字后面还有1个字母,回车想继续输的时候,程序就会直接运行完,且输出的其余的数字都是“3”。这是什么原因呢?
新手,还请各位大大不吝赐教~
搜索更多相关主题的帖子: 练习题 
2007-08-30 13:06
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
一点也不奇怪,那个c不能用%d来读,scanf失败,但t不改变,并且那个c一直留在那里
除非你用%s或者%c把它读走



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-30 13:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
我的解释是:当输入3c时,输入非法结束,使得t的值一直是3,之后全部赋值给a[5]---a[9].
如果你没有使用中间变量t的话,那全部是随机值.

倚天照海花无数,流水高山心自知。
2007-08-30 13:26
cyhbp
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-8-27
收藏
得分:0 
#include <stdio.h>
main()
{
int i;
int a[10];
int t;
for (i=0;i<10;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&t);
fflush(stdin);
a[i]=t;
}
printf("这个数组各元素的值是:%d %d %d %d %d\n",a[0],a[1],a[2],a[3],a[4]);
printf(" %d %d %d %d %d\n",a[5],a[6],a[7],a[8],a[9]);
getch();
}

清除缓冲区函数fflush()

2007-08-30 13:31
flone
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-8-30
收藏
得分:0 

虽然现在看不懂,但总会懂的

2007-08-30 13:35
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
严重反对使用 fflush(stdin);



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-30 13:44
cyhbp
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2007-8-27
收藏
得分:0 
回复:(雨中飞燕)严重反对使用 fflush(stdin);[img]...
为什么不能用呢?感觉在这里挺好用的,一般不用.

2007-08-30 14:10
syzldy
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-8-29
收藏
得分:0 

谢谢各位的指点~

2007-08-30 15:02
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
scanf("%d",&t);

while(scanf("%d",&t)==0)getchar();



by 雨中飞燕 QQ:78803110 QQ讨论群:5305909

请大家不要用TC来学习C语言
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
2007-08-30 15:08
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
所谓scanf函数的返回值就是输入参数的个数(正确状况下)否则返回EOF(-1).
我喜欢这样写while((EOF!=scanf(" ", )) && )

倚天照海花无数,流水高山心自知。
2007-08-30 15:17
快速回复:[求助]一个奇怪的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015144 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved