永发信息网

刚学C语言求教!!!为什么sprintf会两个一起出现 跳过了scanf,如果我在scanf中加\n 转行,就可以输入

答案:2  悬赏:0  手机版
解决时间 2021-11-18 04:53
刚学C语言求教!!!为什么sprintf会两个一起出现 跳过了scanf,如果我在scanf中加\n 转行,就可以输入
最佳答案
回车,也是一个字符,即你按F<回车>,这时,机器收到的是两个字符,这个回车会存储在缓存中,直到有读取命令将它读走。

在输入129 129<回车>后,最后这个回车也会存储在缓存中。
这样,后面的scanf("%c" )在读数据时,就会收到这个回车符,导致没有等你输入。

加了\n,scanf("%d\n" , &nn ) ;这样写时,程序会自动过滤掉回车符的,这就是scanf()的格式输入所达到的效果。

多练习体会一下吧。追问那为什么我最终的结果计算不对啊 像我说的那样输入 h3=h1*1.02 正确应该是h3=h1*1.02*1.015追答请把代码贴上来,我帮你调试一下,图太小看不清追问太多超出范围,粘贴不了啊,你可以保存图片到电脑,就可以放大了,真心求教

追答根据题目,我觉得代码,应该改成如下:
#include 
int main(void)
{
        char sex,sports,diet ;
        int faHeight,moHeight;
        double h1,h3 ;
        printf("input F/N: ");
        scanf("%c", &sex );
        printf("input father&mother height: ");
        scanf("%d %d%*c",&faHeight, &moHeight);
        if ( sex=='F' ) h1=(faHeight*0.923+moHeight)/2 ;
        else
                h1=(faHeight+moHeight)*0.54;
        printf("sports ? Y/N:");
        scanf("%c%*c", &sports );
        printf("goot diet ? Y/N:");
        scanf("%c%*c", &diet );
        if ( sports=='Y' && diet=='Y' ) h3=h1*(1+0.02+0.015) ; //两个条件全满足,是累加关系
        else if ( sports=='Y' ) h3=h1*(1+0.02);
        else if ( diet=='Y' ) h3=h1*(1+0.015);
        else h3=h1;
        printf("height: %f
", h3 );
        return(0);
}追问

十分感谢,我自己弄好了,后面的两个scanf我没有加
我只是在%c前加了个空格就好了,我也不知道为什么改了这个后,这道题的计算也正确了。如图,我学校教C语言是VC6.0 版本好旧,为什么我这样改了后就可以了


全部回答
scanf函数是从输入缓冲区中获取数据, 输入缓冲区中的数据是由用户从键盘输入的, 由于各种原因(用户输入过多,、输入非代码期待的数据类型、代码问题等等),就会造成输入缓冲区中仍然存有上次用户的输入数据,这时scanf就会直接读取数据而不必等待用户输入。
所以最好在scanf语句前加上:fflush(stdin); 来清空输入缓冲区。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
以路为题写一首诗
使用2345手机浏览器上网每天产生的积分星有上
在我家附近的网吧上网!英语怎么说?
我在温州市塘下镇沙渎工业区上班我已经签合同
焖烧杯能煮五谷杂粮吗?
五花腊肉怎么做好吃
诗奈尔法国高质洗衣地址在什么地方,想过去办
夫妻之间搞监控是否算违法
800米等于多少分米
韩剧朱乐梅创作歌曲
正月去发廊洗头太概多少钱
麦克斯(max)是美国的名字还是姓氏,亦或两
45岁150斤应步行多少步才能达到煅练效果
讨论x无限接近2时,x的平方减4除以Ix–2I的极
福源馆的介绍
推荐资讯
小麦2的屏幕是多大的?
如何检测ddos攻击
海珠大酒店地址在什么地方,想过去办事,
天天红包骗人吗
南鸟网吧地址有知道的么?有点事想过去!
穿越火线手游打死三头龙后,手里出现一个带电
融创海上桃源怎么样?
百联集团的旗下上市公司
熨平为什么会前移。影响螺旋叶片旋转。
兰溪花园停车场地址好找么,我有些事要过去
南京今未棠信息技术有限公司怎么样?
cs1.6m249好么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?