0

我已经使用成功的 switch 语句创建了一个简单的计算器程序。但是我无法在底部创建一个 do while 循环,该循环循环我尝试创建的计算器函数,这是我的主要目标是询问用户是否要使用 do while 循环重复计算器程序。任何帮助都将不胜感激。

#include <stdio.h>

char math;
float number1;
float number2;
void calculator();
int selection = 0;

int main()
{
    void calculator(){
        printf(" enter the math operation: ");
        scanf("%c", &math);

        printf("Enter two numbers: ");
        scanf("%f%f", &number1, &number2);

        switch(math)
        {
        case '+':
            printf("number1+number2=%.2f",number1+number2);
        break;

        case '/':
            printf("number1/number2=%.2f",number1/number2);
        break;

        case '-':
            printf("number1-number2=%.2f",number1-number2);
        break;

        case '*':
            printf("number1*number2=%.2f",number1*number2);
        break;

        default:
            printf ("Wrong character entered.");
        }
    }

do while 函数的开始,它询问用户是否要重复该程序。

    do{
        printf{"\n\n - Do you want to repeat the program?"};
        printf("\n1  - Yes");
        printf("\n2  - No");
        scanf("%i", &selection );
    }
    while (selection != 2);
    calculator();
    return 0;
}
4

5 回答 5

1

要回答主要问题,您希望始终先在循环内运行计算器,然后要求再次运行:

void calculator() {
  // calc stuff here
}

int main() {
  do {
    calculator();
    printf("\n\n - Do you want to repeat the program?");
    printf("\n1  - Yes");
    printf("\n2  - No");
    scanf("%i", &selection );
  } while (selection != 2);
}
于 2013-10-15T21:56:20.750 回答
1
  1. 不能用函数定义函数。移动void calculator(){和它的身体外面main()

2经常检查 的结果scanf()

3 在使用之前的 EOL 之前插入一个空格%c

scanf(" %c", &math);

.
4calculator();按照@Josh B 和@koodawg 的建议进入`while 循环

于 2013-10-15T22:07:56.800 回答
1

首先,我建议将calculator() 函数的定义放在函数main() 之外

其次,我建议尽可能不要使用全局变量。只需将selection变量声明放入函数 main(),将math, number1, number2变量声明放入函数calculator()

第三(这个实际上回答了你的问题),在 do{}while 循环中调用函数calculator()

于 2013-10-15T22:16:56.267 回答
0

你对calculator的调用放在while中

于 2013-10-18T06:07:57.743 回答
0

你打电话给计算器是在错误的地方,你需要;

do {
   calculator();
   ...
} while(sel != 2);
于 2013-10-15T21:55:58.367 回答