两个输入中断工作

时间:2016-09-24 07:04:47

标签: c loops while-loop break

我一直在尝试编写一个程序,如果我们希望根据提供的输入退出计算,则会在计算结束时询问。但是如果我输入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;
}

3 个答案:

答案 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将忽略该返回键输入。