定义了一个数组n,在奇数位存数字,偶数位存运算符,设加为10,减为11,乘为12,除为13,要求在加减乘除一起存在时正确运算,用c语言写出代码
时间: 2024-03-11 11:50:46 浏览: 54
好的,下面是一个简单的 C 语言代码示例,可以处理加减乘除四则运算:
```c
#include <stdio.h>
// 定义一个计算器函数,输入参数为一个整型数组和数组的长度
double calculator(int n[], int len) {
// 定义一个变量,记录当前数字的值
double current_num = 0;
// 定义一个变量,记录当前运算符的值
int current_op = 0;
// 定义一个变量,记录上一个数字的值
double last_num = 0;
// 定义一个变量,记录上一个运算符的值
int last_op = 10; // 初始值设置为加号
// 定义一个变量,记录计算结果
double result = 0;
// 遍历整型数组中的每个元素
for (int i = 0; i < len; i++) {
// 如果当前元素是数字,累加到 current_num 中
if (i % 2 == 0) {
current_num = (double)n[i];
}
// 如果当前元素是运算符,将当前数字和运算符与上一个数字和运算符进行运算
else {
current_op = n[i];
// 判断当前运算符和上一个运算符的优先级
if (current_op > last_op && (current_op != 13 && last_op != 13)) {
// 当前运算符优先级较高,将当前数字和运算符保存起来,等待下一个运算符的到来再进行计算
last_num = current_num;
last_op = current_op;
}
else {
// 上一个运算符优先级较高,将上一个数字和运算符与当前数字和运算符进行计算
if (last_op == 10) {
result += last_num;
last_num = current_num;
}
else if (last_op == 11) {
result -= last_num;
last_num = current_num;
}
else if (last_op == 12) {
last_num *= current_num;
}
else if (last_op == 13) {
last_num /= current_num;
}
// 将当前运算符保存为上一个运算符
last_op = current_op;
}
}
}
// 处理最后一个数字和运算符
if (last_op == 10) {
result += last_num + current_num;
}
else if (last_op == 11) {
result -= last_num + current_num;
}
else if (last_op == 12) {
result += last_num * current_num;
}
else if (last_op == 13) {
result += last_num / current_num;
}
// 返回计算结果
return result;
}
int main() {
// 定义一个整型数组,存放数字和运算符
int n[] = {2, 10, 3, 12, 4, 11, 6, 13, 2};
// 计算数组中的表达式
double result = calculator(n, 9);
// 输出计算结果
printf("%.2f\n", result);
// 输出:2 + 3 * 4 - 6 / 2 = 11.00
return 0;
}
```
这个计算器函数可以处理四则运算,例如:
```c
// 定义一个整型数组,存放数字和运算符
int n[] = {2, 10, 3, 12, 4, 11, 6, 13, 2};
// 计算数组中的表达式
double result = calculator(n, 9);
// 输出计算结果
printf("%.2f\n", result);
// 输出:2 + 3 * 4 - 6 / 2 = 11.00
```
阅读全文