C计算器代码问题

时间:2018-05-31 10:14:35

标签: 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;
}

我希望如果用户输入了错误的操作符,那么程序而不是结束会返回到开始。知道怎么做吗? 感谢。

4 个答案:

答案 0 :(得分:1)

我使用有效的运算符创建一个字符数组,在切换条件结束时我们检查它是否有效运算符,否则它会要求用户再次进入运算符:

# 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;
        }

答案 1 :(得分:0)

您可以使用do while循环来完成此操作。

int main() { char ch; do { /* code for calculator*/ ... ... printf("Enter your choice(y/n)?\n"); scanf("\n%c", &ch); }while(ch == 'y' || ch == 'Y'); return 0; }

答案 2 :(得分:0)

使用递归

#include<stdio.h>

void main() {

计算();

}

int calculate(){

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:
        calculate();
}

return 1;

}

答案 3 :(得分:0)

你可以做的是采用while循环和小条件语句。

char choice ='y';
while(choice=='y'||choice=='Y')
{
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");
        printf("Do you want to continue? Press y for yes and n for no");
        scanf("%c",&choice);
        break;
}

return 0;
}

希望这有帮助! 这是一种处理问题的简单方法。当您使用C编写任何程序时,请始终牢记程序的流程。如果您希望计算器始终运行,直到您告诉它停止,那么请始终使用循环。它将根据您的需要多次迭代片段。在您的示例中,最好使用while或do-while循环,因为您不知道用户需要在函数上调用多少次。

编写此代码的更好方法是将整个开关案例写入函数中,并将数字和运算符传递给所述函数。然后在main()块中,您可以使用while循环来调用该函数,如果要继续或终止该程序,请检查您的响应。开始写作函数总是一个好习惯,特别是因为你只是C语言的初学者。