如何用c语言,在屏幕上输入四则运算表达式,然后能输出运算结果
时间: 2024-02-26 21:57:22 浏览: 104
可以使用C语言中的表达式求值功能实现输入四则运算表达式并输出运算结果的功能。具体实现步骤如下:
1. 读取用户输入的四则运算表达式,可以使用scanf函数实现。
2. 将中缀表达式转换为后缀表达式,可以使用栈实现。
3. 对后缀表达式进行求值,可以使用栈实现。
4. 输出运算结果。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define MAX_EXPR_LEN 100 // 最大表达式长度
int is_operator(char c);
int priority(char op);
int eval(char op, int num1, int num2);
int evaluate_expression(char *expr);
int main() {
char expr[MAX_EXPR_LEN];
printf("请输入四则运算表达式:");
scanf("%s", expr);
int result = evaluate_expression(expr);
printf("运算结果:%d\n", result);
return 0;
}
// 判断字符是否为运算符
int is_operator(char c) {
return (c == '+' || c == '-' || c == '*' || c == '/');
}
// 获取运算符优先级
int priority(char op) {
if (op == '+' || op == '-') {
return 1;
} else if (op == '*' || op == '/') {
return 2;
} else {
return 0;
}
}
// 对两个操作数进行运算
int eval(char op, int num1, int num2) {
switch (op) {
case '+': return num1 + num2;
case '-': return num1 - num2;
case '*': return num1 * num2;
case '/': return num1 / num2;
default: return 0;
}
}
// 对后缀表达式进行求值
int evaluate_expression(char *expr) {
int stack[MAX_EXPR_LEN];
int top = -1;
for (int i = 0; expr[i] != '\0'; i++) {
if (isdigit(expr[i])) { // 数字直接入栈
int num = expr[i] - '0';
while (isdigit(expr[i + 1])) { // 处理多位数字
num = num * 10 + (expr[++i] - '0');
}
stack[++top] = num;
} else if (is_operator(expr[i])) { // 运算符入栈前,先弹出栈顶元素
int num2 = stack[top--];
int num1 = stack[top--];
int result = eval(expr[i], num1, num2);
stack[++top] = result;
}
}
return stack[0];
}
```
注意:以上代码仅支持整数运算,且不支持括号。
阅读全文