C语言“简蛋计算器”

这是老生常谈的奇异题目。原题如下:

模拟简单运算器的工作。假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算。

输入格式:
输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数。遇等号”=”说明输入结束。

输出格式:
在一行中输出算式的运算结果,或者如果除法分母为0或有非法运算符,则输出错误信息“ERROR”。

输入样例:

1+2*10-10/2=

输出样例:

10

其中一种写法如下:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

// 头文件和调教VS

int main() {
	// 定义一个变量保存上一个计算法则
	// 最开始输入数字而没有符号的话,默认为加法运算
	char type = '+';

	// 定义变量,sum为全局总和,temp为待操作数
	int sum = 0, temp = 0;

	// 派蒙大循环,必定为真,一直执行
	while (1) {

		// 每次循环重新定义并读入一个字符
		// 这个字符是单独一个数字或运算符,或等号
		char inp;
		scanf("%c", &inp);

		// 判断是否为简单运算支持的运算符号,包括0-9数字(注意数字以 %c 传入不是数值本身)和四个运算符号、一个等号
		if (
			!(
				(inp == '+' || inp == '-' || inp == '*' || inp == '/' || inp == '=')
				||
				(inp >= '0' && inp <= '9')
			)
		) {
			// 如果不支持直接自爆并返回0,退出程序
			printf("ERROR");
			return 0;
		}

		// 判断是否遇到的是运算符号
		if (inp == '+' || inp == '-' || inp == '*' || inp == '/'  || inp == '=') {

			// 如果是运算符号,就把临时数字运算到总和中
			if (type == '+') {
				sum += temp;
			}
			else if (type == '-') {
				sum -= temp;
			}
			else if (type == '*') {
				sum *= temp;
			}
			else if (type == '/') {
				sum /= temp;
			}
			// 如果遇到等号,则准备输出结果
			if (inp == '=') {
			// 输出最终结果并自爆,退出程序
				printf("%d", sum);
				return 0;
			}
			// 更新运算法则,并重新对临时数字置零
			type = inp;
			temp = 0;
		}

		// 输入被支持但不是上述符号,则是数字,那么当数字处理
		else {

			// 如果除0,自爆并退出
			// 判断除0的条件为:上一个运算符是0,这次输入的数字是0,且这个输入是临时数字的第一个数字
			if (inp == '0' && temp == 0 && type == '/') {
				printf("ERROR");
				return 0;
			}

			// 把输入的字符转换为真实数字,并添加到临时数字末尾
			// 对临时数字乘10,再加输入的数字
			// 比如临时数字是 123,要把 4 加到末尾
			// 就是 123 * 10 + 4 = 1234
			temp = temp * 10 + (inp - 48);
		}
	}
}
本作品(《C语言“简蛋计算器”》)采用知识共享署名 4.0 国际许可协议进行许可。转载需注明来源(作者 氧化某人,原文链接 https://blog.yang1120.com/archives/588)。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇