始不垂翅 发表于 2020-11-19 16:50:19

为啥必须输入两个等号才可以跑呀,一个等号无法运行

{:10_269:}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int num1,num2,count = 0;
        char oper;
        scanf("%d",&num1);
        while (oper!='=')
        {
                oper = getchar();
                scanf("%d",&num2);
                if (oper == '+')
                {
                        num1 += num2;
                }
                else if (oper == '-')
                {
                        num1 -= num2;
                }
                else if (oper == '*')
                {
                        num1 *= num2;
                }
                else if (oper == '/')
                {
                        if (num2 == 0)
                        {
                                count++;
                                break;
                        }
                        num1 /= num2;
                }
                else if (oper == '=')
                {
                        break;
                }
               
                else
                {
                        count++;
                        break;
                }
               
        }
        if (count == 1)
        {
                printf("ERROR");
        }
       
        else
        {
                printf("%d",num1);
        }
       
        system("pause");
}

a327190489 发表于 2020-11-19 17:01:14

你这不不是说连续输入俩个等号可以正常运行,而是在等号之后输入任意一个字符才可以运行(当然等号也是一个字符),比如你输入1+1=a他还是会显示2的,因为你结束循环的时候,里面又执行了一遍scanf("%d",&num);

sunrise085 发表于 2020-11-19 19:57:18

描述不清,不是很清楚你的问题是什么

若你直接输入一个运算式,那么应该是不会出现你说的这个问题的。
但你若是输入一个数字,然后回车再输入运算符的话,那就会出错
因为,你你输入一个数字之后直接回车,scanf读取%d之后缓冲区会留一个回车字符,然后这个回车字符会被getchar读取。
页: [1]
查看完整版本: 为啥必须输入两个等号才可以跑呀,一个等号无法运行