编写一个能计算表达式值的小程序。c语言
时间: 2024-10-14 07:16:48 浏览: 20
编写一个能计算简单表达式值的小程序通常涉及解析用户输入、应用运算符优先级规则和使用基本算术操作。以下是一个简单的C语言程序示例,它使用递归函数处理加减乘除的四则运算:
```c
#include <stdio.h>
#include <stdlib.h>
// 函数声明
double calculate(char *expression);
// 计算函数,采用逆波兰表达式(RPN)形式
double calculate_rpn(char *tokens, int length) {
double num = atof(tokens);
if (length == 1) return num;
char op = tokens[length - 1];
double operand2 = calculate_rpn(tokens, length - 2);
double operand1 = tokens[0] == '-' ? -atof(tokens + 2) : atof(tokens + 1);
switch (op) {
case '+':
return operand1 + operand2;
case '-':
return operand1 - operand2;
case '*':
return operand1 * operand2;
case '/':
if (operand2 != 0)
return operand1 / operand2;
else
printf("Error: Division by zero is not allowed.\n");
exit(EXIT_FAILURE);
default:
printf("Invalid operator.\n");
exit(EXIT_FAILURE);
}
}
int main() {
char expression[100];
printf("Enter a simple mathematical expression in postfix notation (e.g., '2 3 +'): ");
fgets(expression, sizeof(expression), stdin); // 使用fgets防止换行符
expression[strlen(expression) - 1] = '\0'; // 去掉末尾的换行符
double result = calculate_rpn(expression, strlen(expression));
printf("Result: %.2f\n", result);
return 0;
}
阅读全文