| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1485 人关注过本帖, 1 人收藏
标题:讨教输入输出问题
只看楼主 加入收藏
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
结帖率:100%
收藏(1)
 问题点数:0 回复次数:10 
讨教输入输出问题
C程序代码如下:
#include<stdio.h>
void main()
{
    int i=0,j=0;
            
    printf("请输入第一个数字:\n");
    scanf("%d",&i);
    printf("第一个数字是:%d\n",i);
    printf("请输入第二个数字:\n");
    scanf("%d",&j);
    printf("第二个数字是:%d\n",j);
}
    我想有经验的人看到程序可能就知道我要问什么了。是的,如果我按照输出的提示,第一次输入1,那么之后会输出“第一个数字是1”,换行后输出“请输入第二个数字:”,接着,我输入2,之后会输出“第二个数字是2”,看起来似乎很正常。但是如果我第一次就输入1和2两个数字,那么之后将不再会有输入机会,屏幕上会显示“第一个数字是1”,换行“请输入第二个数字:”,换行“第二个数字是2”。关于这其中的原因,我感觉模糊,这也是我向大家讨教的地方。另外,关于输入输出有很多值得注意的地方,如果愿意的话,多留些墨宝供大家分享吧!
搜索更多相关主题的帖子: 讨教 输出 输入 
2008-12-09 19:26
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
键盘按下键时,是先放入一个缓冲区,直到按下回车按键里,激活scanf到缓冲区读取按键数据.
针对%d的读取,碰到空格或是逗号或是回车,一次读取结束,如果缓冲区还有数据,会激活第二个scanf继续读取,这样循环下去直到用完缓冲区.
2008-12-09 21:09
yangxixing
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-11-23
收藏
得分:0 
学到了,谢谢二楼的了
2008-12-09 22:50
cjl730
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2008-10-28
收藏
得分:0 
good!!!!!!!!!!
2008-12-10 13:29
jesseman111
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2008-11-19
收藏
得分:0 
怎么我不会出现搂主的情况呢?
2008-12-10 17:06
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
谢谢2楼版主大人!

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-12 10:35
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第6楼 zhangcc86 的帖子
怎么避免这样误输入的事情发生呢?这位朋友想没想过?在程序中加入代码,便能避免这样错误。楼主好好想想。
2008-12-12 10:48
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
回复 第7楼 广陵绝唱 的帖子
之所以会发生这样的问题,是因为scanf第一次到缓冲区读取按键数据后没有清空缓冲区,那么解决问题的办法应该是加入清空缓冲区的代码fflush(stdin),现在在网吧上网,没有上机实践,回去的时候再验证一下。
版主是在教我学习的方法,谢谢!

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-13 10:57
CANNON
Rank: 1
来 自:北京
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-7-22
收藏
得分:0 
学到了谢谢
2008-12-13 12:07
zhangcc86
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2007-4-5
收藏
得分:0 
经上机验证,加入 fflush(stdin) 可避免类似错误。
#include<stdio.h>
void main()
{
    int i=0,j=0;
            
    printf("请输入第一个数字:\n");
    scanf("%d",&i);
    fflush(stdin);//清空缓冲区
    printf("第一个数字是:%d\n",i);
    printf("请输入第二个数字:\n");
    scanf("%d",&j);
    printf("第二个数字是:%d\n",j);
}

你想有所作为,而你又不比别人聪明,也不比别人勤奋,如果你能成功,猪都能上树!
2008-12-13 18:32
快速回复:讨教输入输出问题
数据加载中...
 
   



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

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