问题 Q: 四则运算
题目描述
编写一个程序,为您提供加法、减法、乘法或除法的选项。获得您的选择后,该程序请求两个数,然后执行您选择的操作。该程序应该只接受它所提供的菜单选项。
a表示加法,s表示减法,m表示乘法,d表示除法,q表示结束这个时候应该输出Bye.
输入
一个字符(a,s,m,d,q),随后两行两个数,
输入为q时结束输入。
输出
输出操作算式并求出结果(注意空格,保留两位小数)。
如果为q输出Bye!
样例输入
a
3
4
q
样例输出
3.00 + 4.00 = 7.00
Bye!
代码:
#include
int main()
{
char o,s,m,d,q;
float m1,n,sum;
while(scanf("%c\n%f\n%f",&o,&m1,&n)!=EOF)
{
switch(o)
{
case'a':
printf("%.2f+%.2f=%.2f\n",m1,n,m1+n);
break;
case's':
printf("%.2f-%.2f=%.2f\n",m1,n,m1-n);
break;
case'm':
printf("%.2f*%.2f=%.2f\n",m1,n,m1*n);
break;
case'd':
printf("%.2f/%.2f=%.2f\n",m1,n,m1/n);
break;
case'q':
printf("Bye!");
break;
}
}
}
我每次需要输入两次q才会出现Bye,而且结束不了,
请用c语言在原代码上修改,请看题看题,每次认真看题的人简直少得可怜
不用输两次q,输一次q,任意两个数字应该也能出现bye。
原因应该在while里面。
我知道,那个我试过但是不符合题目要求,这个代码注定不能用switch么,,,,,,,唉,
#include
int main()
{
char o,a,s,m,d,,q;
float m1.m2;
while(1)
{
scanf("%f %f %c",&m1,&m2,&o);
switch(o)
{
case 'a':
// printf("");
break;
case 's':
// printf("");
break;
case 'm':
// printf("");
break;
case 'd':
// printf("");
break;
case 'q:
// printf("");
break;
default:
break;
}
printf("是否继续?\n");
scanf("%c",&o);
if(o!='y')
break;
}
return 0;
}
while(scanf("%c\n%f\n%f",&o,&m1,&n)!=EOF)是连续输入三个数据,你输入两次有结果输出,第一次你输入了三个数,正常,因为你输入的都满足要求,故程序可继续往下走,当你输入q的时候代码有在执行scanf语句,第一q输入满足%c所以程序继续执行,等待第二个输入,当你输入第二个q时,不满足%f的格式,scanf错误,退出了录入,执行了下面的代码,输出了bye,你明白吗