在C中制作简单的计算器

时间:2015-10-13 19:23:08

标签: c

我正在使用运算符+ - * /在C中创建一个简单的计算器。我试着制作一个计算器但是使用do..while时遇到了一些问题。我认为while (op != 'A', 'Q', 'M', 'D', 'S');不正确。我在这需要什么?

#include<stdio.h>

int main(void)
{
    int x, y, result;
    char op;

    printf("****************\n");
    printf("A-----Add\n");
    printf("S-----Substract\n");
    printf("M-----MUltiply\n");
    printf("D-----Divide\n");
    printf("Q-----Quit\n");
    printf("****************\n");

    printf("Enter the operation:");
    scanf("%c", &op);
    printf("Enter the two variables:");
    scanf("%d %d", &x, &y);

    do {

        if (op == 'A')
            result = x + y;
        else if (op == 'S')
            result = x - y;
        else if (op == 'M')
            result = x*y;
        else if (op == 'D')
            result = x / y;
        else if (op == 'Q')
            break;
    } while (op != 'A', 'Q', 'M', 'D', 'S');

    printf("%d %c %d = %d\n", x, op, x, result);

    return 0;
    }

3 个答案:

答案 0 :(得分:1)

!=是二元运算符,左边是一个值,右边是一个值。只需在右侧列出几个值,就无法一次比较多个值。

要使此代码使用最少的更改,您可以单独将op每个变量进行比较,并使用标准逻辑运算符(例如&&)进行组合。

您还需要考虑代码的逻辑。您正在使用do ... while循环,这意味着代码将至少运行一次,并且每次到达结束时,如果while条件为真,它将再次运行。首次运行后会发生什么?如果用户输入(op)没有指定选项,会发生什么?你有一个'退出'选项,但是当它被使用时会发生什么?

答案 1 :(得分:0)

四个问题:

  • 这:while (op != 'A', 'Q', 'M', 'D', 'S')没有达到您的预期。您需要将op分别与每个值进行比较,并在它们之间进行逻辑AND(&&)。

  • 如果您没有输入正确的字母,则while循环将是无限循环,因为用户数据的提示位于循环之外而不是内部。将printfscanf调用移至循环内部。

  • 如果输入无效,则用户按下的换行符将作为第一个scanf的值读入。在每个scanf模式的开头放一个空格,以吃掉缓冲区中可能存在的任何换行符。

  • 当您打印结果时,您将x打印为第二个操作数而不是y

当您应用上述内容时,您应该拥有:

#include<stdio.h>

int main(void)
{
    int x, y, result;
    char op;

    printf("****************\n");
    printf("A-----Add\n");
    printf("S-----Substract\n");
    printf("M-----MUltiply\n");
    printf("D-----Divide\n");
    printf("Q-----Quit\n");
    printf("****************\n");

    do {
        // these four lines go inside the loop to prompt again
        printf("Enter the operation:");
        scanf(" %c", &op);    // the space at the start eats the newline
        printf("Enter the two variables:");
        scanf(" %d %d", &x, &y);   // the space at the start eats the newline

        if (op == 'A')
            result = x + y;
        else if (op == 'S')
            result = x - y;
        else if (op == 'M')
            result = x*y;
        else if (op == 'D')
            result = x / y;
        else if (op == 'Q')
            break;
    //  compare op against each value individually
    } while (op != 'A' && op != 'Q' && op != 'M' && op != 'D' && op != 'S');

    printf("%d %c %d = %d\n", x, op, y, result);

    return 0;
}

答案 2 :(得分:-1)

while (op != 'A' && op != 'Q' && op !='M' && op !='D' && op !='S');