帮我用C语言编写一个可以进行多个数据混合运算的计算器
时间: 2023-09-10 22:06:00 浏览: 133
当然可以,以下是一个简单的C语言程序,实现了多个数据混合运算的计算器:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char input[100]; // 用于存储用户输入的字符串
float nums[100]; // 用于存储转换后的数字
char ops[100]; // 用于存储运算符
int num_count = 0; // 数字的数量
int op_count = 0; // 运算符的数量
float result; // 计算结果
printf("请输入多个数和运算符,以空格隔开(如:1 + 2 * 3):\n");
fgets(input, 100, stdin); // 读取用户输入的字符串
input[strlen(input) - 1] = '\0'; // 将字符串最后的换行符替换为结束符
// 将字符串按空格分割为数字和运算符
char *token = strtok(input, " ");
while (token != NULL) {
if (*token >= '0' && *token <= '9') {
nums[num_count++] = atof(token);
} else {
ops[op_count++] = *token;
}
token = strtok(NULL, " ");
}
// 按照运算符的优先级进行计算
for (int i = 0; i < op_count; i++) {
if (ops[i] == '*' || ops[i] == '/') {
float a = nums[i];
float b = nums[i + 1];
float c;
if (ops[i] == '*') {
c = a * b;
} else {
c = a / b;
}
nums[i] = c;
for (int j = i + 1; j < num_count - 1; j++) {
nums[j] = nums[j + 1];
}
for (int j = i; j < op_count - 1; j++) {
ops[j] = ops[j + 1];
}
num_count--;
op_count--;
i--;
}
}
for (int i = 0; i < op_count; i++) {
if (ops[i] == '+' || ops[i] == '-') {
float a = nums[i];
float b = nums[i + 1];
float c;
if (ops[i] == '+') {
c = a + b;
} else {
c = a - b;
}
nums[i] = c;
for (int j = i + 1; j < num_count - 1; j++) {
nums[j] = nums[j + 1];
}
for (int j = i; j < op_count - 1; j++) {
ops[j] = ops[j + 1];
}
num_count--;
op_count--;
i--;
}
}
result = nums[0];
printf("计算结果为:%.2f\n", result);
return 0;
}
```
这个程序可以接受用户输入多个数和运算符,将其按照运算符的优先级进行计算,并输出最终的计算结果。输入的字符串可以包含加减乘除四种运算符,以及小数点和负号。程序会自动忽略空格和其他无关字符。
阅读全文