CC++ & Algorithm

算术运算符:就像在数学课上学过的加减乘除

中等55
语言版本:C++Python
概述:C++中的算术运算符和数学课上的加减乘除很像,能帮我们完成各种计算任务。

算术运算符:像数学课一样做计算

在编程中,算术运算符就是我们用来做数学计算的小工具,比如加、减、乘、除和求余数。想象一下,你每天有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 / 27 / 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元,看看结果怎么变。

常见错误总结

  1. 忘记整数除法会舍去小数 —— 如果希望得到小数,一定要把其中一个数写成 7.0double 类型。
  2. 取余数 % 只能用于整数 —— 不能用于 doublefloat
  3. 运算符优先级搞错 —— 多使用 ( ) 保证顺序正确,比如 (a + b) * c
  4. 混用中文符号 —— 减号、乘号、除号要使用英文半角符号,不能用中文全角 ×÷
  5. 除数为0 —— 任何数除以0都会导致程序崩溃,务必避免。

接下来学什么?

掌握了基本算术运算符后,你会接触到更多有用的运算符,比如:

  • 自增(++)和自减(--):让变量加1或减1,常用于循环和计数器。
  • 复合赋值运算符:像 +=-=*=/= 等,可以简化代码,比如 x += 5 等价于 x = x + 5
  • 类型转换:如何把整数变成小数,或者把小数变成整数。
  • 数学函数:比如 sqrt() 开平方、pow() 幂运算等,需要包含 <cmath> 头文件。

继续学习,你会越来越擅长用C++解决生活中的计算问题!

例题精讲

1单选题

C++中,表达式 7 % 3 的结果是多少?

A2
B1
C3
D0
2单选题

以下哪个表达式在C++中的值等于 15?

A3 + 4 * 2
B(3 + 4) * 2
C3 * 5 + 5
D20 - 10 / 2
3判断题

在C++中,表达式 9 / 2 的结果是 4.5。

4填空题
下面代码计算两个整数的和并输出。请填写正确的算术运算符。
#include <iostream>
using namespace std;
int main() {
    int a = 10, b = 20;
    int sum = a ___ b;
    cout << sum;
    return 0;
}
5填空题
现有代码计算两个整数的差并输出,但缺少运算符,请补全。
#include <iostream>
using namespace std;
int main() {
    int x = 50, y = 18;
    int diff = x ___ y;
    cout << diff;
    return 0;
}