c编程语言的计算器(累加器)

时间:2016-09-05 13:58:40

标签: c if-statement calculator

我想在c中编写基本计算器: 我有累加器的问题(使用" +"和" - "运算符)

int main(void)
{
    float num1,num2,res;
    char operator;

    printf ("Type in your expression.\n");
    scanf ("%f %c %f", &num1, &operator, &num2);

    if(operator == 'S'){
        printf(" = %.2f\n",num1);
        res = num1;
        while(1){
            printf ("Type in your expression.\n");
            scanf ("%c %f", &operator, &num2);
            if(operator == '+'){
                res += num2;
                printf("%.2f\n", res);
            }
            else if(operator == '-'){
                res -=num2;
                printf("%.2f\n",res);
            }
            else if(operator == '*'){
                res *=num2;
                printf("%.2f\n",res);
            }
            else if(operator == '/'){
                if(num2 == 0)
                    printf("Division by zero\n");
                else
                    res /=num2;
                    printf("%.2f\n",res);

            }
            else if(operator == 'E'){
                printf("End of the calculation:");
                printf("%.2f",res);
                break;

            }
        }     
    } 

在这部分代码中,除法和乘法工作正常: 但是当我喜欢和#34; + 3"或" -2"在累加器期间没有任何反应。我无法弄清问题在哪里。

2 个答案:

答案 0 :(得分:1)

我认为这是因为在下面的命令中:

scanf ("%c %f", &operator, &num2);

当程序在等待读取操作符时输入+3和数字时,它需要+3作为数字而不是+作为运算符而3作为数字。所以你必须给+3(快速分离)。我试过了,我认为它有效!!

答案 1 :(得分:1)

%c不会自动跳过空格。将扫描格式字符串更改为:

        scanf (" %c%f", &operator, &num2);

这会将第一个非空格字符插入operator