一个简单的“打印”计算器

A simple “printing” calculator

当我输入数字时,我看到 输入数字 1 输入运算符错误:未知运算符! 累加器 = 0.000000 输入数字

为什么步骤 - printf("Type in an operator ") 被跳过并替换为 - 默认值: printf ("ERROR: Unknown operator!\n"); 休息;

提前感谢您的帮助!

// Program to produce a simple printing calculator

#include <stdio.h>
#include <stdbool.h>

int main (void)
{

    double accumulator = 0.0, number; // The accumulator shall be 0 at startup
    char operator;
    bool isCalculating = true;  // Set flag indicating that calculations are ongoing


    printf("You can use 4 operator for arithmetic + - / *\n");
    printf("To set accumulator to some number use operator S or s\n");
    printf("To exit from this program use operator E or e\n");
    printf ("Begin Calculations\n");

    while (isCalculating)   // The loop ends when operator is = 'E'
    {

        printf("Type in a digit ");
        scanf ("%lf", &number);             // Get input from the user.

        printf("Type in an operator ");
        scanf ("%c", &operator);
        // The conditions and their associated calculations
        switch (operator)
        {
        case '+':
            accumulator += number;
            break;
        case '-':
            accumulator -= number;
            break;
        case '*':
            accumulator *= number;
            break;
        case '/':
            if (number == 0)
                printf ("ERROR: Division by 0 is not allowed!");
            else
                accumulator /= number;
            break;
        case 'S':
        case 's':
            accumulator = number;
            break;
        case 'E':
        case 'e':
            isCalculating = false;
            break;
        default:
            printf ("ERROR: Unknown operator!\n");
            break;
        }

        printf ("accumulator = %f\n", accumulator);
    }
    printf ("End of Calculations");

    return 0;
}

scanf 对于 char 使用换行符。所以扫描的字符是 "linefeed" 而不是您期望的字符。

我替换了:

scanf ("%c", &operator);

来自

scanf ("%*c%c", &operator);

(使用运算符前的换行符而不使用 %*c 格式分配它)

并且您的代码运行良好。