Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C计算器代码问题_C - Fatal编程技术网

C计算器代码问题

C计算器代码问题,c,C,解决了。谢谢 我是C编程的初学者。我写了一个简单的计算器代码,它工作得很好。这是密码- #include<stdio.h> int main() { char operator; double firstNumber,secondNumber; printf("Enter an operator (+, -, *,/): \n"); scanf("%c", &operator); switch(operator)

解决了。谢谢

我是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;
}
我希望,如果用户输入了错误的运算符,那么程序将返回到开始,而不是结束。你知道怎么做吗?
谢谢。

您可以通过使用do while循环来实现这一点

int main { char ch; 做 { /*计算器代码*/ ... ... 打印机输入您的选择Y/n?\n; 扫描\n%c,&ch; }whilech='y'| ch='y'; 返回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;
        }
使用递归

#include<stdio.h>

}

您可以做的是执行一个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循环更可取,因为您不知道用户需要调用函数多少次


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

你已经学习了循环吗?你需要一个循环。如果用户输入了无效的运算符,则需要返回并读取输入。在C中对循环进行Google搜索。特别是,您可能希望使用类似Do{…}while;或者当。。。{…}.@rohan saini检查这个解决方案,我认为你想要的是错误的,这不是递归,这是错误的。我在stackover flow中添加评论时遇到了麻烦。我编辑了答案。很抱歉
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;
}