赞
踩
在编程的世界里,程序的执行并非总是沿着单一的直线路径向前推进。有时候,我们需要根据特定条件来改变程序的行为,使之能够灵活应对各种情况。这就引出了程序设计中的一个重要概念——分支结构。分支结构赋予程序“思考”的能力,使其能够依据特定条件做出判断,进而执行相应的代码块。这一章,我们将深入探讨C++中的分支结构,这是理解更复杂算法和实现逻辑判断的基础,对于参加全国青少年信息学奥林匹克竞赛(NOI)的入门级选手来说尤为重要。
学习路线:C++从入门到NOI学习路线
学习大纲:C++全国青少年信息学奥林匹克竞赛(NOI)入门级-大纲
什么是分支结构呢?
分支结构就像我们做决定一样,如果满足某个条件,就执行一个操作;
如果不满足,就执行另一个操作。
想象一下,当你们早上起床后,如果看到窗外正在下雨,你们会做什么呢?
是会选择带上雨伞再去上学,
还是选择淋雨呢?
这就是一个简单的分支决策:根据‘是否下雨’这个条件,选择不同的行动(带伞或不带伞)。
在C++中,分支结构是一种程序设计方法,它允许程序根据特定条件的判断结果来选择执行不同的代码路径。
没有听懂?没关系。
分支结构就像一个聪明的交通警察,他站在路口指挥交通。
当看到红灯亮起时,他会告诉汽车停下来等待;而当绿灯亮起时,他又会让汽车安全通过。
警察叔叔根据不同的信号(条件),做出了不同的指令(执行不同的行动)。在编程里,分支结构就像这位交通警察,根据程序接收到的信息(条件),决定下一步应该做什么。
这意味着程序的执行流程不是简单的线性顺序(从上向下,依次执行),而是可以在某个决策点“分支”出去,走向多个可能的之一。
我们刚才了解了分支结构,它能帮程序做出不同选择。
现在,我们要认识一种特殊的‘语言’,它让程序知道什么时候该选择什么,这种语言叫‘bool’类型。
你们看过开关吧?开关有两种状态:打开和关闭。
当我们把开关往上拨,电灯就亮了,这时我们可以说开关处于‘开’的状态,就像编程里的True;
当我们把开关往下拨,电灯熄灭,这时开关处于‘关’的状态,就像编程里的False。
所以,bool类型就像是一个小小的开关,告诉我们某个事情是‘发生’了(True)还是‘没发生’(False)。
C++中的布尔型它只有两个取值:“真”(True)或“假”(False)。就像生活中遇到的“对错”、“有无”、“开闭”等二选一的情况。
在C++中,true被定义为1,false被定义为0。可以使用bool类型的变量来存储和操作布尔值。
以下是一个简单的例子:
#include <iostream>
using namespace std;
int main() {
bool isTrue = true;
bool isFalse = false;
cout << "isTrue = " << isTrue << endl; // 输出:isTrue = 1
cout << "isFalse = " << isFalse << endl; // 输出:isFalse = 0
return 0;
}
C++的单分支结构是if语句,它的语法格式如下:
if (condition) {
// 如果条件为真,执行这里的代码
}
其中,condition是一个表达式,如果它的值为真(非零),则执行花括号中的代码块。因此如果condition的值为假(0),则跳过整个if语句,继续执行后面的代码。
下面是一个简单的例子,演示了如何使用if语句判断一个数是否为正数:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "请输入一个整数:";
cin >> num;
if (num > 0) {
cout << num << "是正数" << endl;
}
return 0;
}
在上面的例子中,如果用户输入的数大于0,则输出该数是正数。如果用户输入的数小于等于0,则if语句不执行,直接跳过。
C++中的双分支结构是if-else语句,它的语法如下:
if (condition) {
// 如果条件成立执行的代码块
} else {
// 如果条件不成立执行的代码块
}
其中,condition是需要判断的条件,如果条件成立则执行if后面的代码块,否则执行else后面的代码块。
而且程序运行到双分支结构是必须选其一执行,不能两个语句块都跳过或都执行。
下面是一个简单的例子,演示了如何使用if-else语句实现输入两个整数,将这两个数按照从小到大的顺序输出的功能:
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
if (a > b) {
cout << b << " " << a << endl;
}else{
cout << a << " " << b << endl;
}
return 0;
}
在这个例子中,我们首先使用cin语句输入两个整数a和b,然后使用if-else语句判断a和b的大小关系,如果a大于b,则交换它们的值,最后使用cout语句输出结果。
类型:分支
题目描述:
小明去冷饮店买冰激凌,如果买 10 个以上或者 10 个,2 元 / 个, 10 个以下, 2.2 元 / 个。
请从键盘读入小明的购买数量,计算小明应付的价格!
输入:
一个整数,代表小明购买的冰激凌的数量(n≤100) 。
输出:
小明应付的金额,金额保留 1 位小数!
样例:
输入:
20
输出:
40.0
1.分析问题
2.定义变量
int n:存储小明购买的冰激凌数量,类型为整数,范围符合题目要求(n≤100)。
double p:存储小明应付的金额,类型为双精度浮点数,以便保留小数点后的精度。
//二、数据定义
int n;
double p;
3.输入数据
读取用户输入的冰激凌数量,并将其存储在变量 n 中。
//三、数据输入
cin>>n;
4.数据计算
计算应付金额的初值为 2.2 * n,假设所有冰激凌单价为 2.2 元。
接着检查 n 是否大于等于 10,如果是,则根据题目条件,从总金额中减去优惠部分(0.2 * n),即每个冰激凌优惠 0.2 元。
这样,最终得到的 p 即为小明应付的金额。
//四、数据计算
p=2.2*n;
if(n>=10){
p-=0.2*n;
}
5.输出结果
设置输出格式:
然后输出计算得到的应付金额 p。
//五、输出结果
cout<<fixed<<setprecision(1)<<p;
return 0;
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 一、数据定义
// 定义变量 n 用于存储小明购买的冰激凌数量(整数,范围 1 ≤ n ≤ 100)
int n;
// 定义变量 p 用于存储小明应付的金额(双精度浮点数,保留 1 位小数)
double p;
// 二、数据输入
// 从标准输入读取小明购买的冰激凌数量
cin >> n;
// 三、数据计算
// 初始假设所有冰激凌单价为 2.2 元,计算总金额
p = 2.2 * n;
// 若购买数量达到或超过 10 个,则享受优惠
// 每个冰激凌优惠 0.2 元,从总金额中减去优惠部分
if (n >= 10) {
p -= 0.2 * n;
}
// 四、输出结果
// 设置输出浮点数格式:定点显示,保留 1 位小数
// 输出小明应付的金额
cout << fixed << setprecision(1) << p;
return 0;
}
类型:分支
题目描述:
输入一个整数,判断是否为偶数。是输出 y e s ,否则输出n o。
输入:
输入只有一行,包括 1 个整数(该整数在 1∼10000 的范围内)。
输出:
输出只有一行。(注意输出格式,具体请看下方提示)。
样例:
输入:
2
输出:
y e s
1.分析问题
2.定义变量
定义整数变量 n,用于存储用户输入的整数。
//二、数据定义
int n;
3.输入数据
从标准输入读取用户输入的整数,存入变量 n。
//三、数据输入
cin>>n;
4.数据计算
根据 n 是否为偶数,输出相应的结果。
//四、数据计算
if(n%2==0){
//五、输出结果
cout<<"y e s";
}else{
//五、输出结果
cout<<"n o";
}
完整代码如下:
#include <iostream>
using namespace std;
int main() {
// 一、分析问题
// 已知:用户输入一个整数 n。
// 未知:判断 n 是否为偶数,并输出对应结果。
// 关系:若 n 除以 2 的余数为 0,则 n 为偶数。
// 二、数据定义
int n; // 定义整数变量 n,用于存储用户输入的整数
// 三、数据输入
cin >> n; // 从标准输入读取用户输入的整数,存入变量 n
// 四、数据计算
// 五、输出结果
// 根据 n 是否为偶数,输出相应的结果
if (n % 2 == 0) {
cout << "y e s"; // 输出 "y e s"
} else {
cout << "n o"; // 输出 "n o"
}
return 0;
}
类型:分支
题目描述:
夏天到了,气温太高,小明的爷爷每天有晨练的习惯,但有时候温度不适合晨练;小明想编写一个程序,帮助爷爷判断温度是否适合晨练。
输入温度 t 的值,判断其是否适合晨练,适合晨练输出 OK ,不适合输出 NO 。( 20≤t≤30 ,则适合晨练 OK ,否则不适合 NO )。
输入:
一个整数代表当天的温度。
输出:
OK 或者 NO 。
样例:
输入:
22
输出:
OK
1.分析问题
2.定义变量
定义整数变量 t,用于存储用户输入的温度值。
//二、数据定义
int t;
3.输入数据
从标准输入读取用户输入的温度值,存入变量 t。
//三、数据输入
cin>>t;
4.数据计算
判断温度 t 是否在适合晨练的范围内(20 ≤ t ≤ 30)。
//四、数据计算
if(t>=20&&t<=30){
//五、输出结果
cout<<"OK";
}else{
//五、输出结果
cout<<"NO";
}
完整代码如下:
#include <iostream>
using namespace std;
int main() {
// 一、分析问题
// 已知:用户输入一个表示温度的整数 t。
// 未知:根据温度 t 判断是否适合爷爷晨练,并输出对应结果。
// 关系:若温度满足 20 ≤ t ≤ 30,则适合晨练(输出 "OK"),否则不适合(输出 "NO")。
// 二、数据定义
int t; // 定义整数变量 t,用于存储用户输入的温度值
// 三、数据输入
cin >> t; // 从标准输入读取用户输入的温度值,存入变量 t
// 四、数据计算
// 五、输出结果
// 根据温度 t 是否适合晨练,输出相应的结果
if (t >= 20 && t <= 30) {
cout << "OK"; // 输出 "OK"
} else {
cout << "NO"; // 输出 "NO"
}
return 0;
}
类型:分支
题目描述:
学校有 n 位同学要外出旅游,一辆大巴车可以坐 30 人,请问需要几辆大巴车?
输入:
一个整数 n,代表同学的总人数。
输出:
一个整数,代表需要大巴车的数量。
样例:
输入:
18
输出:
1
1.分析问题
2.定义变量
定义整数变量 n 存储学生总数,x 存储所需大巴车数量。
//二、数据定义
int n,x;
3.输入数据
从标准输入读取学生总数 n。
//三、数据输入
cin>>n;
4.数据计算
若学生总数不能被大巴车座位数整除(有余数),需额外增加 1 辆大巴车。
//四、数据计算
x=n/30;
if(n%30!=0){
++x;
}
5.输出结果
输出所需大巴车数量。
//五、输出结果
cout<<x;
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 一、分析问题
// 已知:有 n 位同学要外出旅游,一辆大巴车可以坐 30 人。
// 未知:计算需要租用多少辆大巴车才能满足所有同学的出行需求。
// 关系:总学生数 n 除以每辆大巴车座位数(30 人),商为整数部分车数,余数不为 0 时需额外增加 1 辆车。
// 二、数据定义
int n, x; // 定义整数变量 n 存储学生总数,x 存储所需大巴车数量
// 三、数据输入
cin >> n; // 从标准输入读取学生总数 n
// 四、数据计算
// 计算所需大巴车的整数部分数量
x = n / 30;
// 若学生总数不能被大巴车座位数整除(有余数),需额外增加 1 辆大巴车
if (n % 30 != 0) {
++x;
}
// 五、输出结果
// 输出所需大巴车数量
cout << x;
return 0;
}
类型:分支
题目描述:
某车站行李托运收费标准是: 10 公斤或 10 公斤以下,收费 2.5 元,超过 10 公斤的行李,按每超过 1 公斤增加 1.5 元进行收费。
试编一程序,输入行李的重量,算出托运费。
输入:
输入只有一行,包括 1 个整数。
输出:
输出只有一行,包括 1 个数。 (保留两位小数)。
样例:
输入:
10
输出:
2.50
1.分析问题
2.定义变量
定义整数变量 n 存储行李重量(公斤)。
定义双精度浮点数变量 p 存储计算出的托运费用。
//二、数据定义
int n;
double p;
3.输入数据
标准输入读取行李重量 n(公斤)。
//三、数据输入
cin>>n;
4.数据计算
初始化基础费用为 2.5 元。
若行李重量超过 10 公斤,则计算超出部分的额外费用。
//四、数据计算
p=2.5;
if(n>10){
n-=10;
p+=1.5*n;
}
5.输出结果
设置输出浮点数格式:定点显示,保留 2 位小数。
输出计算出的托运费用。
//五、输出结果
cout<<fixed<<setprecision(2)<<p;
return 0;
完整代码如下:
#include <bits/stdc++.h>
using namespace std;
int main() {
// 一、分析问题
// 已知:用户输入行李的重量(公斤)。
// 未知:根据行李重量计算所需的托运费用,并输出结果。
// 关系:行李重量在 10 公斤或 10 公斤以下,收费 2.5 元;超过 10 公斤的部分,每超 1 公斤加收 1.5 元。
// 二、数据定义
int n; // 定义整数变量 n 存储行李重量(公斤)
double p; // 定义双精度浮点数变量 p 存储计算出的托运费用
// 三、数据输入
cin >> n; // 从标准输入读取行李重量 n(公斤)
// 四、数据计算
// 初始化基础费用为 2.5 元
p = 2.5;
// 若行李重量超过 10 公斤,则计算超出部分的额外费用
if (n > 10) {
n -= 10; // 计算超出 10 公斤的部分重量
p += 1.5 * n; // 根据超出部分重量计算额外费用,并累加到基础费用上
}
// 五、输出结果
// 设置输出浮点数格式:定点显示,保留 2 位小数
// 输出计算出的托运费用
cout << fixed << setprecision(2) << p;
return 0;
}
类型:分支
题目描述:
恐龙园买门票,身高低于 1.3 米购儿童票( 60元 ),否则成人票 120 元。
试编写一个程序,输入身高,输出相应的门票价格。
输入:
一行,一个人的身高。
输出:
一行,一个整数。
样例:
输入:
1.1
输出:
60
1.分析问题
2.定义变量
定义双精度浮点数变量 h 存储输入的身高(米)。
// 二、数据定义
double h;
3.输入数据
从标准输入读取身高 h(米)。
// 三、数据输入
cin >> h;
4.数据计算
根据身高计算出的门票类型,输出对应的票价。
if (h >= 1.3) {
cout << "120"; // 输出成人票价格(120 元)
} else {
cout << "60"; // 输出儿童票价格(60 元)
}
完整代码如下:
#include <iostream>
using namespace std;
int main() {
// 一、分析问题
// 已知:用户输入一个人的身高(米)。
// 未知:根据身高计算对应的门票价格(儿童票或成人票),并输出结果。
// 关系:身高低于或等于 1.3 米,购买儿童票(价格 60 元);身高高于 1.3 米,购买成人票(价格 120 元)。
// 二、数据定义
double h; // 定义双精度浮点数变量 h 存储输入的身高(米)
// 三、数据输入
cin >> h; // 从标准输入读取身高 h(米)
// 四、数据计算
// 五、输出结果
// 根据身高计算出的门票类型,输出对应的票价
if (h >= 1.3) {
cout << "120"; // 输出成人票价格(120 元)
} else {
cout << "60"; // 输出儿童票价格(60 元)
}
return 0;
}
分支结构是程序设计中不可或缺的一部分,它使程序具备了根据特定条件作出不同响应的能力。在本章的学习中,我们详细探讨了C++中的分支结构,具体涵盖以下几个核心要点:
分支结构的概念:如同生活中根据天气状况选择是否携带雨伞,分支结构允许程序在遇到不同条件时选择执行不同的代码路径。C++中的if语句和if-else语句就是实现这种逻辑判断的关键工具。
布尔类型:布尔类型(bool)是用于表示逻辑值(真/假、是/否、开/关)的特殊数据类型,其值只能为true(真)或false(假)。通过对布尔变量的赋值和逻辑运算符的应用,程序能够准确地评估条件并据此进行决策。
单分支结构(if语句):单分支结构由关键字if引导,后面跟一个条件表达式和待执行的代码块。当条件为真时,执行该代码块;反之,程序跳过该代码块继续执行后续代码。例如,通过if语句判断用户输入的整数是否为正数,如果是,则输出提示信息。
双分支结构(if-else语句):双分支结构在if语句的基础上增加了else子句,形成if-else结构。当if后的条件为真时执行第一个代码块,否则执行else后的代码块。例如,根据输入的两个整数大小关系,使用if-else语句实现数值的交换并按升序输出。
最后通过若干实践题目,如行李托运费用计算、恐龙园门票购买及冷饮价格计算等,展示了如何运用分支结构解决实际问题。这些示例不仅帮助巩固理论知识,还锻炼了读者运用分支结构编写实用程序的能力。
如若本文对您的学习或工作有所启发和帮助,恳请您给予宝贵的支持——轻轻一点,为文章点赞;若觉得内容值得分享给更多朋友,欢迎转发扩散;若认为此篇内容具有长期参考价值,敬请收藏以便随时查阅。
每一次您的点赞、分享与收藏,都是对我持续创作和分享的热情鼓励,也是推动我不断提供更多高质量内容的动力源泉。期待我们在下一篇文章中再次相遇,共同攀登知识的高峰!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。