C语言最后一句错误,c语言问题:最后scanf一句执行不了

满意答案

00e27ab806e4881f8254fe7ae8741834.png

bmdpxy

推荐于 2016.10.29

00e27ab806e4881f8254fe7ae8741834.png

采纳率:48%    等级:7

已帮助:361人

楼主 这个问题算是比较特殊的了

1.printf("请问你是否还要继续,继续请输入y/Y,否则输入其他的任意字符\n");

scanf("%c",&ch1);

有scanf语句 当循环时又要执行

scanf("%c",&ch);

这两个scanf语句间隔比较近,程序执行的速度快于键盘扫描的速度,就会出现当输入按回车时,这两个命令都执行完了

所以要用 fflush(stdin); 清楚输入的缓冲;

fflush(stdin);

scanf("%c",&ch1);

再在循环第一行加上 fflush(stdin);

2.循环的条件语句有问题

这是个死循环,输入的ch1 不可能同时等于y与Y,所以怎样都会循环的

而且最好不要用y与Y定义成其他的字符,这样不利于程序的理解

建议这样改 while(ch1=='y'||ch1=='Y');

改完的循环如下:我去掉了y与Y的定义

do

{fflush(stdin);

scanf("%c",&ch);

switch(ch)

{

case 'A':

printf("你选择的是加法运算,请输入两个数\n");

scanf("%lf%lf",&a,&b);

printf("请输入他们的和\n");

scanf("%lf",&he);

he1=a+b;

(he==he1)?printf("你真棒!\n"):printf("再想想?\n");break;

case 'B':

printf("你选择的是减法运算,请输入两个数\n");

scanf("%lf%lf",&a,&b);

printf("请输入他们的差\n");

scanf("%lf",&cha);

cha1=a-b;

(cha==cha1)?printf("你真棒!\n"):printf("再想想?\n");break;

case 'C':

printf("你选择的是乘法运算,请输入两个数\n");

scanf("%lf%lf",&a,&b);

printf("请输入他们的积\n");

scanf("%lf",&ji);

ji1=a*b;

(ji==ji1)?printf("你真棒!\n"):printf("再想想?\n");break;

case 'D':

printf("你选择的是除法运算,请输入两个数\n");

scanf("%lf%lf",&a,&b);

printf("请输入他们的商\n");

scanf("%lf",&shang);

shang1=a/b;

(shang==shang1)?printf("你真棒!\n"):printf("再想想?\n");break;

}

fflush(stdin);

printf("请问你是否还要继续,继续请输入y/Y,否则输入其他的任意字符\n");

scanf("%c",&ch1);

}while(ch1=='y'||ch1=='Y');

00分享举报

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值