#t204. 计算(a+b)*c的值
计算(a+b)*c的值
计算(a+b)*c的值
题目背景
Special for beginners, ^_^
题目描述
给定个整数,计算表达式的值。
输入格式
输入仅一行,包括三个整数, 数与数之间以一个空格分开。
输出格式
输出一行,即表达式的值。
样例输入
2 3 5
样例输出
25
数据范围
1s, 1024KiB for each test case.
提示
一、C++ 的运算顺序和数学课本一样
- 先算括号里的;
- 再算乘
*、除/、取余%; - 最后算加
+、减-; - 同一级的,从左往右算。
printf("%d\n", 2 + 3 * 4); // 14,先算 3*4
printf("%d\n", (2 + 3) * 4); // 20,括号优先
printf("%d\n", 20 / 2 / 5); // 2,同级从左往右:(20/2)/5
二、括号只改变顺序,不改变运算本身
括号可以嵌套,最里层先算:((2+3)*(4-1)) → 先算 2+3 和 4-1,再相乘。
即使优先级本来就对,也建议加括号——写 (a+b)*c 比 a+b*c 一眼能看懂,少出错。
三、写表达式时的四个坑
- 漏乘号:数学里写
2x,C++ 必须写2 * x,2x是语法错误。 - 中文括号:
(2+3)*4里的圆括号如果是中文输入法打的,编译直接报错。 - 括号不配对:
(a+b*c少一个右括号。 - 整数除法:
1/2是 0 不是 0.5,想算小数要写1.0/2。
四、自检
算完后用计算器按一遍题面的式子,和程序输出对一下。如果差得离谱,先怀疑括号位置,再怀疑整数除法。
- 数学式子里有括号,C++ 里照抄同样的圆括号即可。
- 三个数一次读入,
scanf里写三个%d,变量前都别忘了&。
自查:样例
2 3 5 → 25可以确认运算顺序;如果算出 17,就是先乘后加了。