有关getchar的问题
发表在C语言图书答疑 2010-12-10
是否精华
版块置顶:
我在做《c语言从入门到精通》第120页实例6.9时,把程序改动了一下下后为什么运行结果不一样了?
改动后为:
#include<stdio.h>
int main()
{
float deus;
float amount;
int ontime;char cChar;
puts("enter dues amount");
scanf("%f",&deus);
puts("if pay back ontime?(y/n)");
[font color=#FF0000]scanf("%c",&cChar);
[/font]ontime=(cChar=='y')?1:0;
amount=ontime?deus:deus*1.1;
printf("should pay back :%2f",amount);
return 0;

}
分享到:
精彩评论 4
Lemon
学分:0 LV1
2010-12-10
沙发
您好!

您得到什么结果?
是否再输入y时输入了大写Y,如果输入大写Y将得到不一样结果,
否则应该得到一样的结果。
stars6
学分:0 LV1
TA的每日心情
开心
2022-05-20 14:34:08
2010-12-11
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
您好!

您得到什么结果?
是否再输入y时输入了大写Y,如果输入大写Y将得到不一样结果,
否则应该得到一样的结果。
[/FIELDSET]

回复:

  我得到的结果是:
enter dues amount
100.2
if pay back ontime?(y/n)
should pay back :110.219997Press any key to continue
不能输入y/n
Lemon
学分:0 LV1
2010-12-13
地板
您好~

抱歉,没发现您改动了其它的部分。

这里红色的代码应该替换为书上的代码
getcahr();
cChar=getchar();
因为,getchar()用于从键盘上读入一个字符,然后等待输入是否结束,如果用户按下回车键,则执行下一条语句
Lemon
学分:0 LV1
2010-12-13
4L
另外,代码ontime=(cChar=='y')?1:0;
要改成 ontime=(cChar=='y')?0:1;

如果一定要使用scanf(), 则需要使用if语句,判断如果输入了y,则继续执行,否则不执行。

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照