C计算器代码问题

标签 c

已解决。谢谢!

我是 C 编程初学者。我编写了一个简单的计算器代码并且运行良好。这是代码-

    #include<stdio.h>

int main() {

    char operator;
    double firstNumber,secondNumber;

    printf("Enter an operator (+, -, *,/): \n");
    scanf("%c", &operator);

    switch(operator)
    {
        case '+':
            printf("Enter two numbers: ");
            scanf("%lf %lf",&firstNumber, &secondNumber);
            printf("%.2f + %.2f = %.2f",firstNumber, secondNumber, firstNumber + secondNumber);
            break;

        case '-':
            printf("Enter two numbers: ");
            scanf("%lf %lf",&firstNumber, &secondNumber);       
            printf("%.2f - %.2f = %.2f",firstNumber, secondNumber, firstNumber - secondNumber);
            break;

        case '*':
            printf("Enter two numbers: ");
            scanf("%lf %lf",&firstNumber, &secondNumber);
            printf("%.2f * %.2f = %.2f",firstNumber, secondNumber, firstNumber * secondNumber);
            break;

        case '/':
            printf("Enter two numbers: ");
            scanf("%lf %lf",&firstNumber, &secondNumber);
            printf("%.2f / %.2f = %.2f",firstNumber, secondNumber, firstNumber / secondNumber);
            break;

        default:
            printf("Error! operator is not correct.\n");
    }

    return 0;
}

我希望如果用户输入错误的运算符,则程序不会结束而是返回到开头。知道如何做吗? 谢谢。

最佳答案

我创建了一个包含有效运算符的字符数组,在切换条件结束时我们检查其运算符是否有效,如果不是,则会要求用户再次输入运算符:

# include<stdio.h>
# include <string.h>

        int main()
        {

            char operator;
            double firstNumber, secondNumber;
            char operators[] = "-+*/";
            bool isOperator = false;

            while (!isOperator)
            {
                printf("Enter an operator (+, -, *,/): \n");
                scanf("%c", &operator);

                switch (operator)
                    {
                        case '+':
                            printf("Enter two numbers: ");
                    scanf("%lf %lf", &firstNumber, &secondNumber);
                    printf("%.2f + %.2f = %.2f", firstNumber, secondNumber, firstNumber + secondNumber);
                    break;

                        case '-':
                            printf("Enter two numbers: ");
                    scanf("%lf %lf", &firstNumber, &secondNumber);
                    printf("%.2f - %.2f = %.2f", firstNumber, secondNumber, firstNumber - secondNumber);
                    break;

                        case '*':
                            printf("Enter two numbers: ");
                    scanf("%lf %lf", &firstNumber, &secondNumber);
                    printf("%.2f * %.2f = %.2f", firstNumber, secondNumber, firstNumber * secondNumber);
                    break;

                        case '/':
                            printf("Enter two numbers: ");
                    scanf("%lf %lf", &firstNumber, &secondNumber);
                    printf("%.2f / %.2f = %.2f", firstNumber, secondNumber, firstNumber / secondNumber);
                    break;

                    default:
                            printf("Error! operator is not correct.\n");
                }
                char* res;
                res = strchr(operators,operator);
                if (res != NULL)
                {
                    isOperator = true;
                }
                else
                {
                    isOperator = false;
                }
            }

            return 0;
        }

关于C计算器代码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50621884/

相关文章:

从 GUI 但不是从控制台应用程序调用 JNI 时,Java 关闭(崩溃)

c - 读取系统调用表函数地址时内核模块崩溃

c - 在C中的行尾添加字符

c - C 函数的实际性能测试

c - 使用来自非 C 程序的 C 库 : is it necessary to explicitely initialize the "under-the-hood" C library?

c++ - `if(CONSTANT) { ... }` 是否在 C/C++ 中进行了优化?

c - 显示用 C 分隔的整数逗号?

c - 当我们声明 struct node *p = NULL; 时,我们的意思是什么?

c++ - 将字符串转换为 IMAGE_T

c - 我应该如何修复这个有趣的 getdelim/getline (动态内存分配)错误?