用c语言写一个能计算多个数的计算器,能体现出来优先级
时间: 2023-11-20 21:06:51 浏览: 30
这是一个简单的能计算多个数的计算器的例子,能够体现出优先级的影响。
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
double num1, num2, result;
char operator;
printf("Enter the first number: ");
scanf("%lf", &num1);
printf("Enter an operator (+, -, *, /): ");
scanf(" %c", &operator);
printf("Enter the second number: ");
scanf("%lf", &num2);
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
default:
printf("Invalid operator\n");
exit(1);
}
printf("%.2lf %c %.2lf = %.2lf\n", num1, operator, num2, result);
return 0;
}
```
这个例子只能计算两个数的结果,如果要计算多个数的结果,可以使用循环来不断读取输入,然后根据操作符的优先级进行计算。以下是一个示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
double num, result;
char operator, prev_operator;
printf("Enter an expression: ");
scanf("%lf", &result);
while (1) {
scanf(" %c", &operator);
if (operator == '=') {
printf("Result: %.2lf\n", result);
break;
}
scanf("%lf", &num);
switch (operator) {
case '+':
case '-':
if (prev_operator == '+' || prev_operator == '-') {
result = prev_operator == '+' ? result + num : result - num;
} else {
result = operator == '+' ? result + num : result - num;
}
break;
case '*':
case '/':
if (prev_operator == '*' || prev_operator == '/') {
result = prev_operator == '*' ? result * num : result / num;
} else {
result = operator == '*' ? result * num : result / num;
}
break;
default:
printf("Invalid operator\n");
exit(1);
}
prev_operator = operator;
}
return 0;
}
```
这个例子可以计算多个数的结果,并且能够体现出加减乘除的优先级。