算术运算符:就像在数学课上学过的加减乘除
中等55算术运算符:像数学课一样做计算
在编程中,算术运算符就是我们用来做数学计算的小工具,比如加、减、乘、除和求余数。想象一下,你每天有10元零花钱,买零食花了3元,还剩多少钱?用减法算一下:10 - 3 = 7。C++里的算术运算符和数学课上学的很像,只是写法稍微不同。
C++中常用的算术运算符有:
+加法(比如2 + 3得5)-减法(比如5 - 2得3)*乘法(注意不是×,而是星号*,比如3 * 4得12)/除法(不是÷,而是斜杠/,比如10 / 2得5)%取余数(也叫模运算,比如7 % 3得1,表示7除以3余1)
下面我们逐一认识它们,并用生活里的例子来加深理解。
1. 加法、减法、乘法:和数学一模一样
加、减、乘的用法和数学完全一样,你只要把数学式子里的 × 换成 *、÷ 换成 / 就行了。
生活例子:小明有5本故事书,小红给了他3本,现在一共有几本?用加法:5 + 3。小明原来有8支铅笔,送给同桌2支,还剩几支?用减法:8 - 2。一个文具盒6元,买4个需要多少钱?用乘法:6 * 4。
代码里写起来很简单:
int books = 5; // 原有书数量
int given = 3; // 得到的书
int total = books + given; // 加法
int pencils = 8; // 原有铅笔
int given_away = 2; // 送掉的铅笔
int left = pencils - given_away; // 减法
int price = 6; // 每个文具盒价格
int count = 4; // 买几个
int cost = price * count; // 乘法
注意:C++里乘号必须是 *,不能写成 × 或直接用 x,否则会报错。
2. 除法:小心整数“舍去”小数
除法有两个要注意的地方。首先,如果是两个整数相除,C++会直接舍去小数部分,只保留整数部分。比如 7 / 2,数学上等于3.5,但在C++里结果是 3,而不是3.5。这是因为两个整数相除的结果仍然是整数,小数部分被“切掉”了。
生活例子:7个苹果平均分给2个小朋友,每人能分几个?数学上每人3个半,但实际分苹果时每人拿3个,剩下1个。C++里的整数除法就代表“每人能分到几个完整的苹果”,所以 7 / 2 得3。
如果想得到小数结果,必须让至少一个数变成小数(浮点数),比如写成 7.0 / 2 或 7 / 2.0,或者用 double 类型的变量。
另一个例子:你攒了50元,想买每支7元的钢笔,最多能买几支?用 50 / 7 整数除法得到7,因为7×7=49,还剩1元。如果你的零花钱是50.0元,单价是7.0元,就可以用 50.0 / 7.0 得到约7.1429,但这表示可以买7支多一点点。
int apples = 7; // 苹果总数
int kids = 2; // 小朋友人数
int each = apples / kids; // 整数除法:每人3个
cout << "每个小朋友分得 " << each << " 个苹果。\n";
double money = 50.0; // 零花钱,用小数表示
double pen_price = 7.0; // 钢笔单价
double max_pen = money / pen_price; // 小数除法:约7.1429
cout << "可以买 " << max_pen << " 支钢笔。\n";
常见错误:新手常常以为 7/2 会得到3.5,结果发现是3,感到奇怪。记住:两个整数相除,结果也是整数,小数被丢弃。
3. 取余数 %:算一算还剩多少
取余数运算符 % 返回两个数相除之后的 余数。例如 10 % 3 表示10除以3,商3余1,所以结果是1。
生活例子:你有10块饼干,平均分给3个朋友,每人3块,还剩1块,用 10 % 3 得到1。如果去游乐园玩,有20张优惠券,每5张可以换一个冰淇淋,你能换几个?用 20 / 5 = 4 个,没有剩余,所以 20 % 5 = 0。如果换成21张,那么 21 % 5 = 1,还多1张。
取余数还经常用来判断一个数是不是偶数:如果一个数 n 满足 n % 2 == 0,说明是偶数,否则是奇数。
int cookies = 10; // 饼干数
int friends = 3; // 朋友数
int remainder = cookies % friends; // 余数=1
cout << "还剩 " << remainder << " 块饼干。\n";
int number = 7; // 一个数字
int is_even = number % 2; // 7%2=1,说明是奇数
cout << number << " 是" << (is_even == 0 ? "偶数" : "奇数") << "\n";
注意:取余数 % 两边都必须是整数,不能用于小数。比如 7.5 % 3 是错误的。
4. 运算符的优先级:先乘除后加减
和数学一样,C++里也是先算乘法、除法、取余数,再算加法和减法。如果有括号,先算括号里的。比如 2 + 3 * 4 会先算 3 * 4 = 12,再加2得14。而 (2 + 3) * 4 会先算括号里 2+3=5,再乘4得20。
新手常犯的错误是不加括号,导致结果和预期不一样。比如想要计算“5加上3后再乘以2”,如果写成 5 + 3 * 2,结果是 5 + (3*2)=11,而不是 (5+3)*2=16。所以一定要用括号明确顺序。
5. 完整示例:零花钱和购物的计算
下面这个程序结合了今天学到的所有运算符,计算你一周的零花钱怎么花。
#include <iostream>
using namespace std;
int main() {
// 设定初始数据
int pocket_money = 50; // 一周零花钱50元
int snack_price = 8; // 每包零食8元
int pen_price = 3; // 每支笔3元
// 买3包零食,花掉多少钱?
int snack_cost = snack_price * 3; // 乘法:8*3=24
cout << "买3包零食花费:" << snack_cost << "元\n";
// 买5支笔,花掉多少钱?
int pen_cost = pen_price * 5; // 乘法:3*5=15
cout << "买5支笔花费:" << pen_cost << "元\n";
// 总共花了多少钱?
int total_cost = snack_cost + pen_cost; // 加法:24+15=39
cout << "总共花费:" << total_cost << "元\n";
// 还剩多少钱?
int remaining = pocket_money - total_cost; // 减法:50-39=11
cout << "剩余零花钱:" << remaining << "元\n";
// 剩余的钱可以再买几包零食?看能买多少完整的包
int extra_snacks = remaining / snack_price; // 整数除法:11/8=1
cout << "还能再买 " << extra_snacks << " 包零食\n";
// 买完后还剩多少钱?
int left_money = remaining % snack_price; // 取余数:11%8=3
cout << "买完零食后剩下 " << left_money << " 元\n";
// 如果想要精确计算平均每天花多少钱(用小数),需要用浮点数
double days = 7.0; // 7天
double daily_cost = total_cost / days; // 39/7 ≈ 5.57143
cout << "平均每天花 " << daily_cost << " 元\n";
return 0;
}
运行结果会依次输出:
买3包零食花费:24元
买5支笔花费:15元
总共花费:39元
剩余零花钱:11元
还能再买 1 包零食
买完零食后剩下 3 元
平均每天花 5.57143 元
你可以在电脑上运行这个程序,修改数字试试,比如把零花钱变成100元,看看结果怎么变。
常见错误总结
- 忘记整数除法会舍去小数 —— 如果希望得到小数,一定要把其中一个数写成
7.0或double类型。 - 取余数
%只能用于整数 —— 不能用于double或float。 - 运算符优先级搞错 —— 多使用
( )保证顺序正确,比如(a + b) * c。 - 混用中文符号 —— 减号、乘号、除号要使用英文半角符号,不能用中文全角
-、×、÷。 - 除数为0 —— 任何数除以0都会导致程序崩溃,务必避免。
接下来学什么?
掌握了基本算术运算符后,你会接触到更多有用的运算符,比如:
- 自增(++)和自减(--):让变量加1或减1,常用于循环和计数器。
- 复合赋值运算符:像
+=、-=、*=、/=等,可以简化代码,比如x += 5等价于x = x + 5。 - 类型转换:如何把整数变成小数,或者把小数变成整数。
- 数学函数:比如
sqrt()开平方、pow()幂运算等,需要包含<cmath>头文件。
继续学习,你会越来越擅长用C++解决生活中的计算问题!
例题精讲
C++中,表达式 7 % 3 的结果是多少?
以下哪个表达式在C++中的值等于 15?
在C++中,表达式 9 / 2 的结果是 4.5。
下面代码计算两个整数的和并输出。请填写正确的算术运算符。
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 20;
int sum = a ___ b;
cout << sum;
return 0;
}现有代码计算两个整数的差并输出,但缺少运算符,请补全。
#include <iostream>
using namespace std;
int main() {
int x = 50, y = 18;
int diff = x ___ y;
cout << diff;
return 0;
}