c - 为什么我的 '+' 运算符被视为换行符?

标签 c newline user-input

以下代码用于模块化计算器问题。输入数据为:

 5
+3
* 7
+10
* 2
* 3
+1
% 11
#include <stdio.h>

int main(void) {
    char oper;
    int number,result;
    scanf("%d",&number);
    result=number;
    do
    {
        oper=getchar();
        fflush(stdin);
        scanf("%d",&number);
        if(oper=='+')
        {
            result=result+number;
        }
        else if(oper=='*')
        {
            result=result*number;
        }
        printf("%c %d %d ",oper,number,result);
    }while(oper!='%');
    result=result%number;
    printf("%d",result);
    return 0;
}

我得到的输出如下:

3 5 
 3 5 * 7 35 
 10 35 
 10 35 * 2 70 
 2 70 * 3 210 
 1 210 
 1 210 % 11 210 1

我似乎无法弄清楚为什么?

最佳答案

替换

oper=getchar();
fflush(stdin);
scanf("%d",&number);

scanf(" %c", &oper);
scanf("%d", &number);

关于c - 为什么我的 '+' 运算符被视为换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323555/

相关文章:

c - 在 VSCode 中查看 C 文档?

c - 在C程序中我们可以让一个变量的名字成为一个变量吗?

c++ - 如何在 C/C++ 中将 typedef 函数作为参数传递

jquery - 文本区域中的新行将转换为 <br/>

Git:使用 git hook 将回车符\r 转换为新行\n?

c - 限制关键字 - 优化和别名影响

php - 如何识别数据库列中的换行符

c++ - 文件不会将输出保存到文件,并奇怪地打印出一个字符串 C++ Linux

powershell - 让用户从命令行选项菜单中选择文件名

C++ 验证 - 截断设置为下一个输入