合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
习题6-7 简单计算器
模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。
输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。
输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。
输入样例:
1+2*10-10/2=
输出样例:
10
二、代码(C语言)⭐️
#include <stdio.h> // 引入标准输入输出库,用于使用 printf 和 scanf 等函数
int main() {
int result = 0; // 初始化计算结果,初始值为 0
int num; // 用于存储当前操作数
char opt; // 用于存储当前操作符
char ch; // 用于临时存储输入的字符
// 因为题目说明至少有一个操作数,所以先获取第一个操作数
scanf("%d", &result);
// 进入循环,处理后续的操作符和操作数
while (1) {
ch = getchar(); // 读取一个字符(可能是操作符或等号)
if (ch == '=') { // 如果读取到等号,结束输入
break;
}
// 检查读取的字符是否是合法的操作符
if (ch == '+' || ch == '-' || ch == '*' || ch == '/') {
opt = ch; // 如果是合法操作符,存储到 opt 中
} else {
printf("ERROR"); // 如果是非法字符,输出错误信息
return 0; // 结束程序
}
// 读取下一个操作数
scanf("%d", &num);
// 根据操作符执行相应的计算
switch (opt) {
case '+':
result += num; // 加法
break;
case '-':
result -= num; // 减法
break;
case '*':
result *= num; // 乘法
break;
case '/':
if (num == 0) { // 检查除数是否为 0
printf("ERROR"); // 如果除数为 0,输出错误信息
return 0; // 结束程序
} else {
result /= num; // 除法
}
break;
}
}
// 输出最终的计算结果
printf("%d", result);
return 0; // 程序正常结束
}