“小朋友们,”我拿出一张写着’今天下雨了吗?’的卡片,”如果今天下雨了,你们会带伞吗?”
“会!”教室里响起整齐的回答。
“看,这就是我们今天要学的’if语句’,”我笑着说,”它就像是在问’如果发生了什么事情,我们该怎么做’。”
{.alignnone}
### 5.3.1 if-else双分支结构
“让我们来玩一个游戏!”我拿出两张不同颜色的卡片,”假设这是一个魔法门,如果你说对了咒语,就能进入糖果屋,如果说错了,就会进入学习室。”
小朋友们都兴奋地坐直了身子。
“这就是’if-else’结构,”我解释道,”它就像一个有两个出口的门,根据条件的对错,选择不同的路。”
{.alignnone}
##### 🔬 **实验七A:比较数字大小**
题目描述:
编写一个程序,从用户输入一个整数,判断该数是否大于100。程序需要清晰地显示判断结果,帮助理解if-else双分支结构的基本用法。这是最基础的条件判断案例,适合初学者理解分支语句的概念。
输入格式:
一个整数n
输出格式:
一行字符串,表示判断结果
数据范围:
-1000 ≤ n ≤ 1000
样例输入1:
“`
150
“`
样例输出1:
“`
这个数大于100
“`
样例输入2:
“`
50
“`
样例输出2:
“`
这个数不大于100
“`
解题思路:
1. 使用cin获取用户输入的整数
2. 使用if-else结构进行条件判断
3. 根据判断结果输出对应提示信息
4. 通过endl确保输出换行
代码实现:
“`cpp
#include
using namespace std;
int main() {
int num; // 存储用户输入的数字
// 提示用户输入并获取数据
cout <> num;
// 使用if-else结构判断数字大小
if(num > 100) {
cout << "这个数大于100" << endl; // 大于100时的输出
} else {
cout << "这个数不大于100" < 100)判断数字是否大于100
4. 根据判断结果输出对应提示信息
注意事项:
1. 输入必须是整数
2. 程序没有对输入数据范围进行检查
3. 输出结果包含换行符
4. 相等的情况被归类到”不大于”中
##### 🔬 实验七B:考试成绩判断
题目描述:
编写一个程序,判断学生考试是否及格。程序从用户输入一个0到100之间的考试分数,判断是否达到60分及格线。这个程序帮助理解if-else在实际应用场景中的使用。
输入格式:
一个浮点数score,表示考试分数
输出格式:
一行字符串,显示”及格”或”不及格”
数据范围:
0.0 ≤ score ≤ 100.0
样例输入1:
“`
75.5
“`
样例输出1:
“`
及格
“`
样例输入2:
“`
45.5
“`
样例输出2:
“`
不及格
“`
解题思路:
1. 使用double类型存储分数,支持小数
2. 使用if-else结构判断是否达到及格线
3. 使用常量60作为及格分数线
4. 输出简洁的判断结果
代码实现:
“`cpp
#include
using namespace std;
int main() {
double score; // 使用double存储分数,支持小数
// 提示用户输入并获取分数
cout <> score;
// 检查分数是否在有效范围内
if(score 100) {
cout << "无效的分数!" <= 60) {
cout << "及格" << endl; // 分数大于等于60分
} else {
cout << "不及格" <= 60判断是否及格
4. 对无效输入进行了处理
注意事项:
1. 分数必须在0-100之间
2. 考虑到小数的精确度问题
3. 程序对输入范围做了检查
4. 使用return 1表示异常退出
##### 🔬 实验七C:判断倍数
题目描述:
编写一个程序,判断用户输入的整数是否是3的倍数。程序需要使用求余运算符(%)来判断一个数是否能被3整除,这个程序帮助理解数学运算在条件判断中的应用。
输入格式:
一个整数n
输出格式:
一行字符串,表明该数是否为3的倍数
数据范围:
-10000 ≤ n ≤ 10000
样例输入1:
“`
9
“`
样例输出1:
“`
这个数是3的倍数
“`
样例输入2:
“`
7
“`
样例输出2:
“`
这个数不是3的倍数
“`
解题思路:
1. 使用cin获取用户输入的整数
2. 使用求余运算符%判断是否能被3整除
3. 使用if-else结构输出判断结果
4. 考虑负数的情况
代码实现:
“`cpp
#include
using namespace std;
int main() {
int num; // 存储用户输入的数字
// 提示用户输入并获取数据
cout <> num;
// 使用求余运算判断是否为3的倍数
if(num % 3 == 0) {
cout << "这个数是3的倍数" << endl; // 能被3整除
} else {
cout << "这个数不是3的倍数" << endl; // 不能被3整除
}
return 0;
}
“`
代码说明:
1. 使用%运算符计算除以3的余数
2. 余数为0表示是3的倍数
3. num % 3会自动处理负数情况
4. 输出结果包含明确的说明文字
注意事项:
1. 输入必须是整数
2. %运算符只用于整数运算
3. 需要考虑负数的情况
4. 0也是3的倍数
##### 🔬 实验七D:游乐园票价判断
题目描述:
编写一个程序,根据游客身高判断应购买的门票类型。游乐园规定:身高超过130厘米(含)需要购买成人票,低于130厘米可以购买儿童票。程序需要处理以米为单位的身高输入,并给出适当的购票建议。
输入格式:
一个浮点数height,表示身高(单位:米)
输出格式:
一行字符串,说明应该购买的票型
数据范围:
0.5 ≤ height ≤ 2.5
样例输入1:
“`
1.45
“`
样例输出1:
“`
需要购买成人票
“`
样例输入2:
“`
1.25
“`
样例输出2:
“`
可以购买儿童票
“`
解题思路:
1. 将输入的身高转换为厘米进行比较
2. 使用if-else结构进行判断
3. 设定130厘米为分界线
4. 考虑输入值的有效性检查
代码实现:
“`cpp
#include
using namespace std;
int main() {
double height; // 存储身高(米)
// 提示用户输入并获取身高
cout <> height;
// 检查输入是否有效
if(height 2.5) {
cout << "无效的身高数据!" <= 130) {
cout << "需要购买成人票" << endl; // 身高达到要求
} else {
cout << "可以购买儿童票" << endl; // 身高未达要求
}
return 0;
}
“`
代码说明:
1. 使用double类型存储身高,支持小数
2. 将米转换为厘米进行比较
3. 添加了输入数据的有效性检查
4. 使用清晰的提示信息
注意事项:
1. 输入身高必须是以米为单位
2. 程序会检查身高的合理范围
3. 130厘米是包含在成人票范围内的
4. 考虑了异常输入的处理
##### 🔬 实验七E:判断奇偶数
题目描述:
编写一个程序,判断用户输入的整数是奇数还是偶数。程序使用求余运算符(%)来判断一个数除以2的余数,从而确定该数的奇偶性。这个程序帮助理解如何使用数学运算来进行基本的数字特征判断。
输入格式:
一个整数n
输出格式:
一行字符串,说明该数是奇数还是偶数,并包含原始数字的显示
数据范围:
-1000000 ≤ n ≤ 1000000
样例输入1:
“`
42
“`
样例输出1:
“`
42是偶数
“`
样例输入2:
“`
-15
“`
样例输出2:
“`
-15是奇数
“`
解题思路:
1. 获取用户输入的整数
2. 使用num % 2判断余数
3. 余数为0即为偶数,否则为奇数
4. 考虑负数的情况
代码实现:
“`cpp
#include
using namespace std;
int main() {
int num; // 存储用户输入的数字
// 提示用户输入并获取数据
cout <> num;
// 使用求余运算判断奇偶性
if(num % 2 == 0) {
cout << num << "是偶数" << endl; // 能被2整除
} else {
cout << num << "是奇数" << endl; // 不能被2整除
}
return 0;
}
“`
代码说明:
1. 使用%运算符计算除以2的余数
2. 输出中包含原始输入的数字
3. 程序自动处理负数的情况
4. 使用endl确保输出换行
注意事项:
1. 输入必须是整数
2. 程序同样适用于负数
3. 0被视为偶数
4. 大数也可以正确判断
##### 🔬 实验七F:闰年判断
题目描述:
编写一个程序,判断用户输入的年份是否为闰年。闰年的判断规则是:能被4整除但不能被100整除的年份,或者能被400整除的年份。这个程序综合运用了逻辑运算符和数学运算,体现了复杂条件判断的应用。
输入格式:
一个整数year,表示年份
输出格式:
一行字符串,说明该年份是否为闰年
数据范围:
1 ≤ year ≤ 9999
样例输入1:
“`
2000
“`
样例输出1:
“`
2000年是闰年
“`
样例输入2:
“`
1900
“`
样例输出2:
“`
1900年不是闰年
“`
样例输入3:
“`
2024
“`
样例输出3:
“`
2024年是闰年
“`
解题思路:
1. 获取用户输入的年份
2. 应用闰年的两条判断规则:
– 能被4整除且不能被100整除
– 或者能被400整除
3. 使用逻辑运算符组合条件
4. 注意运算符优先级
代码实现:
“`cpp
#include
using namespace std;
int main() {
int year; // 存储用户输入的年份
// 提示用户输入并获取年份
cout <> year;
// 检查输入年份是否有效
if(year <= 0) {
cout << "无效的年份!" << endl;
return 1; // 异常退出
}
// 使用组合条件判断是否为闰年
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
cout << year << "年是闰年" << endl;
} else {
cout << year << "年不是闰年" << endl;
}
return 0;
}
“`
代码说明:
1. 使用逻辑运算符&&和||组合条件
2. 使用括号明确运算优先级
3. 添加了年份有效性检查
4. 输出包含原始年份信息
注意事项:
1. 年份必须是正整数
2. 理解闰年的两个条件
3. 注意逻辑运算符的优先级
4. 考虑输入验证的重要性
##### 🔬 实验七G:体温检测系统
题目描述:
编写一个体温检测程序,用于疫情防控。程序需要判断输入的体温是否在正常范围内(不超过37.2℃),并给出相应的提示信息。这个程序模拟了实际场景中的体温检测应用,体现了条件判断在健康检测中的应用。
输入格式:
一个浮点数temperature,表示体温(单位:℃)
输出格式:
一行字符串,说明体温状况和进入许可
数据范围:
35.0 ≤ temperature ≤ 42.0
样例输入1:
“`
36.5
“`
样例输出1:
“`
体温正常,可以进入
“`
样例输入2:
“`
37.8
“`
样例输出2:
“`
体温偏高,需要隔离观察
“`
样例输入3:
“`
34.5
“`
样例输出3:
“`
体温异常,请重新测量
“`
解题思路:
1. 使用double类型存储体温数据
2. 首先验证体温数据是否在合理范围内
3. 使用37.2℃作为临界值进行判断
4. 提供清晰的提示信息
代码实现:
“`cpp
#include
using namespace std;
int main() {
double temperature; // 存储体温数据
// 提示用户输入并获取体温
cout <> temperature;
// 首先检查体温是否在合理范围内
if(temperature 42.0) {
cout << "体温异常,请重新测量" << endl;
return 1; // 异常退出
}
// 判断体温是否正常
if(temperature <= 37.2) {
cout << "体温正常,可以进入" << endl;
} else {
cout << "体温偏高,需要隔离观察" << endl;
}
return 0;
}
“`
代码说明:
1. 使用double类型保证体温测量的精确度
2. 添加了体温范围的合理性检查
3. 使用清晰的提示信息
4. 考虑了异常情况的处理
注意事项:
1. 体温数据必须是有效的浮点数
2. 程序会检查体温是否在合理范围内
3. 37.2℃是包含在正常范围内的
4. 输出信息要简明扼要
##### 🔬 实验七H:密码验证系统
题目描述:
编写一个简单的密码验证程序。程序设定一个4位数字密码(1234),验证用户输入的密码是否正确。这个程序模拟了基本的密码验证过程,是条件判断在安全验证中的典型应用。
输入格式:
一个整数password,表示用户输入的密码
输出格式:
一行字符串,说明密码验证结果
数据范围:
1000 ≤ password ≤ 9999
样例输入1:
“`
1234
“`
样例输出1:
“`
密码正确,欢迎使用!
“`
样例输入2:
“`
5678
“`
样例输出2:
“`
密码错误,请重试!
“`
样例输入3:
“`
123
“`
样例输出3:
“`
无效的密码格式!
“`
解题思路:
1. 设定正确的密码为常量
2. 验证输入的密码格式(4位数)
3. 比较输入密码与正确密码
4. 提供友好的提示信息
代码实现:
“`cpp
#include
using namespace std;
int main() {
const int CORRECT_PASSWORD = 1234; // 设定正确密码
int password; // 存储用户输入的密码
// 提示用户输入并获取密码
cout <> password;
// 检查密码格式是否正确
if(password 9999) {
cout << "无效的密码格式!" << endl;
return 1; // 异常退出
}
// 验证密码是否正确
if(password == CORRECT_PASSWORD) {
cout << "密码正确,欢迎使用!" << endl;
} else {
cout << "密码错误,请重试!" << endl;
}
return 0;
}
“`
代码说明:
1. 使用const定义不可修改的正确密码
2. 添加了密码格式的验证
3. 使用==运算符比较密码是否相等
4. 提供清晰的错误提示
注意事项:
1. 密码必须是4位数字
2. 注意==和=的区别
3. 考虑输入验证的重要性
4. 实际应用中应使用更安全的密码存储方式
##### 🔬 实验七I:及格分数差距计算
题目描述:
编写一个程序,根据用户输入的分数,计算与及格线(60分)的差距。如果及格,显示超出及格线多少分;如果不及格,显示还差多少分及格。这个程序展示了条件判断与数值计算的结合应用。
输入格式:
一个整数score,表示考试分数
输出格式:
一行字符串,说明与及格线的具体分数差距
数据范围:
0 ≤ score ≤ 100
样例输入1:
“`
75
“`
样例输出1:
“`
恭喜及格,超过及格线15分
“`
样例输入2:
“`
45
“`
样例输出2:
“`
未及格,还差15分及格
“`
解题思路:
1. 使用60作为及格分数线
2. 计算输入分数与60的差值
3. 根据是否及格输出不同信息
4. 验证输入分数的有效性
代码实现:
“`cpp
#include
using namespace std;
int main() {
int score; // 存储考试分数
const int PASS_SCORE = 60; // 定义及格线
// 提示用户输入并获取分数
cout <> score;
// 检查分数是否在有效范围内
if(score 100) {
cout << "无效的分数!" <= PASS_SCORE) {
cout << "恭喜及格,超过及格线"
<< (score – PASS_SCORE) << "分" << endl;
} else {
cout << "未及格,还差"
<< (PASS_SCORE – score) << "分及格" << endl;
}
return 0;
}
“`
代码说明:
1. 使用常量定义及格分数线
2. 添加了分数范围的验证
3. 使用算术运算计算分数差距
4. 提供友好的输出信息
注意事项:
1. 输入分数必须是0-100的整数
2. 分数差距的正负计算要准确
3. 60分属于及格范围
4. 输出信息要清晰明了
##### 🔬 实验七J:小数的比较
题目描述:
编写一个程序,比较两个价格(小数)是否相等。由于计算机中小数的存储特点,直接比较小数可能产生误差,需要采用特殊的比较方法。这个程序展示了在实际应用中如何正确处理小数的比较问题。
输入格式:
两个浮点数price1、price2,表示两个价格
输出格式:
多行文本,使用两种不同方法比较价格并显示结果
数据范围:
0.0 ≤ price1, price2 ≤ 10000.0
样例输入1:
“`
10.80 10.8
“`
样例输出1:
“`
方法1结果:两个价格相等
方法2结果:两个价格基本相等
“`
样例输入2:
“`
10.81 10.80
“`
样例输出2:
“`
方法1结果:两个价格不相等
方法2结果:两个价格不相等
“`
解题思路:
1. 使用两种不同的方法比较小数:
– 转换为整数比较(乘以100)
– 计算差值与精度比较
2. 考虑小数计算的精度问题
3. 设定合适的误差范围
4. 提供清晰的比较结果
代码实现:
“`cpp
#include
using namespace std;
int main() {
double price1, price2; // 存储两个价格
// 提示用户输入并获取价格
cout <> price1 >> price2;
// 方法1:转换为整数比较
int price1_cents = price1 * 100 + 0.5; // 加0.5用于四舍五入
int price2_cents = price2 * 100 + 0.5;
cout << "方法1结果:";
if(price1_cents == price2_cents) {
cout << "两个价格相等" << endl;
} else {
cout << "两个价格不相等" << endl;
}
// 方法2:判断差值
cout << "方法2结果:";
double diff = price1 – price2;
if(diff -0.000001) {
cout << "两个价格基本相等" << endl;
} else {
cout << "两个价格不相等" << endl;
}
return 0;
}
“`
代码说明:
1. 使用double类型存储价格
2. 实现两种比较方法
3. 考虑了四舍五入的处理
4. 设定了合适的误差范围
注意事项:
1. 浮点数比较不能直接使用==
2. 整数转换要考虑四舍五入
3. 误差范围的选择要适当
4. 输出结果要区分两种方法