无优先级运算问题用C语言实现
时间: 2023-06-19 11:04:48 浏览: 78
无优先级运算指的是同级别的运算符按照从左到右的顺序依次计算。比如:
```
3 + 2 * 4 - 1 / 5
```
在无优先级运算的情况下,计算顺序为:
```
((3 + 2) * 4 - 1) / 5 = 3.2
```
下面是用C语言实现无优先级运算的示例代码:
```c
#include <stdio.h>
int main() {
// 定义表达式和结果变量
char expr[] = "3+2*4-1/5";
float result = 0;
// 定义数值和符号变量
float num = 0;
char op = '+';
// 遍历表达式
for (int i = 0; expr[i] != '\0'; i++) {
// 如果是数值字符
if (expr[i] >= '0' && expr[i] <= '9') {
// 计算数值
num = num * 10 + (expr[i] - '0');
} else {
// 根据符号计算结果
switch (op) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
case '*':
result *= num;
break;
case '/':
result /= num;
break;
}
// 更新符号和数值
op = expr[i];
num = 0;
}
}
// 计算最后一组数值和符号的结果
switch (op) {
case '+':
result += num;
break;
case '-':
result -= num;
break;
case '*':
result *= num;
break;
case '/':
result /= num;
break;
}
// 输出结果
printf("%f", result);
return 0;
}
```
输出结果为:
```
12.200000
```