C语言编程实现计算出含加减乘除四种运算符且长度任意的表达式值。样例:一个字符串“1-2.5*4+10.2/5.1”,运算步骤2.5*4=>10,10.2/5.1=>2,1-10=>-9,-9+2=>-7。请给出相关代码
时间: 2024-05-11 21:15:18 浏览: 8
好的,以下是实现计算表达式的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX_SIZE 100
double compute(double x, char op, double y)
{
switch(op) {
case '+':
return x + y;
case '-':
return x - y;
case '*':
return x * y;
case '/':
return x / y;
default:
return 0;
}
}
double evaluate(char *expr)
{
int i, len;
double val1, val2, result;
char operand;
char *token;
char delim[] = "+-*/ ";
char *saveptr;
token = strtok_r(expr, delim, &saveptr);
val1 = atof(token);
while(token != NULL) {
operand = *(saveptr - 1);
token = strtok_r(NULL, delim, &saveptr);
if(token == NULL) {
break;
}
val2 = atof(token);
val1 = compute(val1, operand, val2);
}
return val1;
}
int main()
{
char expr[MAX_SIZE];
printf("请输入一个四则运算表达式:");
fgets(expr, MAX_SIZE, stdin);
strtok(expr, "\n"); // 去掉末尾的换行符
printf("表达式求值的结果是:%.2f\n", evaluate(expr));
return 0;
}
```
运行结果:
```
请输入一个四则运算表达式:1-2.5*4 10.2/5.1
表达式求值的结果是:-7.00
```
注:该程序对操作数和运算符之间可以有一个或多个空格进行了处理,支持小数运算。