我一直在尝试编写一个程序,如果我们希望根据提供的输入退出计算,则会在计算结束时询问。但是如果我输入n,它等待另一个输入它退出程序,在第二个输入后它退出。有什么方法可以避免这种情况吗?以及这种情况发生的原因。这是完整的代码。
#include<stdio.h>
int main()
{
float num1, num2;
char op, cont;
while(1)
{
scanf(" %f %c %f",&num1,&op,&num2);
if (op=='+')
printf("%.3f \n",num1+num2);
else if(op=='-')
printf("%.3f \n",num1-num2);
else if(op=='*')
printf("%.3f \n",num1*num2);
else if(op=='/')
{
if(num2==0)
printf("Look where you put your zeroes\n");
else
printf("%.3f\n",num1/num2);
}
else if(op=='%')
printf("%d\n",(int)num1%(int)num2);
else
{
printf("What was the crap you just entered?\n");
}
printf("Continue using calc?[y/n]");
scanf(" %c\n",&cont);
if (cont=='n')
break;
}
return 0;
}
答案 0 :(得分:0)
答案 1 :(得分:0)
完成以下更改后,我的程序正常运行:
char op, cont='y';
while(cont == 'y')
scanf(" %c", &cont);
答案 2 :(得分:0)
由于上次扫描而发生问题。对于num1 op num2的第一次扫描,它需要一个返回(Enter),然后在执行scanf进行字符计数时,它将最后一次重新调整键(Enter)作为输入。所以它再次要求num1 op num2。这可以通过多种方式停止,通过scanf使用&#34; scanf(℅c℅* c,&amp; count)&#34; 。%* c将忽略该返回键输入。