满意答案
bmdpxy
推荐于 2016.10.29
采纳率: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分享举报