同学们好!今天我们要学习C++中两个超级实用的数学运算符——整除除法和求余运算!它们就像是数学世界的"分苹果魔法",能帮我们解决很多有趣的数学问题!
一、什么是整除和求余?
通俗理解:
分苹果的例子:
- 有13个苹果
- 分给4个小朋友
- 每人分到:13 ÷ 4 = 3个(整除)
- 还剩下:13 % 4 = 1个(求余)
核心概念:
- 整除除法 /:得到商(每人分几个)
- 求余运算 %:得到余数(剩下几个)
二、基本语法和用法
1. 整除除法/
int result = 13 / 4; // result = 32. 求余运算%
int remainder = 13 % 4; // remainder = 1三、趣味案例讲解
案例1:分糖果游戏
#include <iostream>
using namespace std;
int main() {
int candies = 23; // 总糖果数
int children = 5; // 小朋友数量
int each = candies / children; // 每人分到的
int left = candies % children; // 剩下的
cout << " 分糖果游戏" << endl;
cout << "==========" << endl;
cout << "总糖果数:" << candies << "颗" << endl;
cout << "小朋友数:" << children << "个" << endl;
cout << "每人分到:" << each << "颗" << endl;
cout << "剩余糖果:" << left << "颗" << endl;
return 0;
}运行结果:
分糖果游戏
==========
总糖果数:23颗
小朋友数:5个
每人分到:4颗
剩余糖果:3颗四、整除的注意事项
1. 整数除法的特点
int a = 5 / 2; // a = 2(不是2.5!)
int b = 7 / 3; // b = 2(不是2.333...!)
// 如果要得到小数,需要至少一个操作数是浮点数
double c = 5.0 / 2; // c = 2.5
double d = 7 / 3.0; // d ≈ 2.3332. 除数为0的错误
int result = 5 / 0; // 运行时错误!五、求余运算的妙用
1. 判断整除关系
if (number % 3 == 0) {
cout << number << "能被3整除" << endl;
}2. 循环周期处理
// 模拟时钟,24小时制
int hour = 25;
hour = hour % 24; // hour = 1(25点就是第二天1点)3. 提取数字的各位数
int number = 123;
int units = number % 10; // 个位:3
int tens = (number / 10) % 10; // 十位:2
int hundreds = number / 100; // 百位:1六、综合应用案例
案例4:数字分解器
#include <iostream>
using namespace std;
int main() {
int number;
cout << " 数字分解器" << endl;
cout << "==========" << endl;
cout << "请输入一个三位数:";
cin >> number;
// 分解各位数字
int hundreds = number / 100;
int tens = (number / 10) % 10;
int units = number % 10;
cout << "百位数:" << hundreds << endl;
cout << "十位数:" << tens << endl;
cout << "个位数:" << units << endl;
cout << "数字和:" << hundreds + tens + units << endl;
return 0;
}案例5:闰年判断器
#include <iostream>
using namespace std;
int main() {
int year;
cout << " 闰年判断器" << endl;
cout << "==========" << endl;
cout << "请输入年份:";
cin >> year;
// 闰年规则:
// 1. 能被4整除但不能被100整除
// 2. 或者能被400整除
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
cout << year << "年是闰年" << endl;
} else {
cout << year << "年不是闰年" << endl;
}
return 0;
}七、常见错误及解决方法
错误1:忘记整数除法特性
int average = (90 + 85 + 95) / 3; // 正确:90
double average = (90 + 85 + 95) / 3; // 还是90.0!
// 正确做法:
double average = (90.0 + 85 + 95) / 3; // 90.0错误2:负数的求余运算
int a = -7 % 3; // 结果可能是-1,不同编译器结果可能不同建议: 避免对负数使用求余运算
错误3:除数为0
int result = 5 / 0; // 运行时错误!解决: always check divisor before division
八、动手实践
练习1:倍数判断器
编写程序判断一个数是否能同时被3和5整除
练习2:数字反转
编写程序将一个三位数的数字反转(如123→321)
练习3:分钟转换
编写程序将总分钟数转换为天、小时、分钟格式
九、数学竞赛应用
1. 判断质数
bool isPrime(int n) {
if (n <= 1) return false;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return false;
}
return true;
}2. 最大公约数(GCD)
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}十、总结
今天学会了:
- 整除除法 /:得到商
- 求余运算 %:得到余数
- 实际应用:分物品、时间转换、数字处理
- 常见错误:整数除法特性、除数为0
- 竞赛应用:质数判断、最大公约数
记忆口诀:
整除求余真神奇,数学问题轻松解
斜杠除,百分余,分苹果的例子记心里
判断奇偶和闰年,数字分解时间转
编程竞赛常用到,掌握它们真重要!
课后挑战:
- 编写程序判断一个数是否能被2、3、5同时整除
- 制作一个完整的日期计算器,计算两个日期之间的天数差