【发布时间】:2017-02-02 01:39:14
【问题描述】:
我一直在尝试编写一个程序,在计算结束时询问我们是否希望根据提供的输入退出它。但是,如果我输入 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;
}
【问题讨论】:
-
尝试使用
cont=getchar();而不是scanf(" %c\n", &cont); -
毫无疑问是
\n导致了这个问题.. -
是的@ParnabSanyal 成功了!谢啦。也知道为什么会这样吗?因为我输入 y 它似乎工作得很好。
-
没有。 @KrishnaChaitanya。看起来它工作正常。但事实并非如此。
-
不要在
scanf)格式字符串中放置尾随空格,甚至是换行符。格式字符串中的任何空格(例如空格、制表符或换行符)都会跳过零个或多个空格字符,直到遇到不是空格或 EOF 的字符时才会停止。这意味着它会一直读取,直到您键入不是空白的内容。您必须预测下一个输入需要从什么开始才能停止当前输入。这对你的用户来说很糟糕!%c前的前导空白是好的;尾随换行很糟糕!算了吧。该代码将正常工作。
标签: c loops while-loop break