编程能力等级认证 LESSON_07-分支结构2(课件)

2025-07-07
| 26页
| 21人阅读
| 0人下载
普通

内容正文:

CCF-GESP C++一级 CCF-GESP C++一级 编程能力等级认证 分支结构2 第七课 分支结构2 第七课是分支结构 2 if-else多分支语句 01 01 第一部分是if-else多分支语句 3 if (条件1) 语句1; else if (条件2) 语句2; …… else if (条件n) 语句n; else 语句n+1; 当条件为真,则执行对应的语句,并终止整个多分支语句的执行; 条件都不成立,则执行else语句。 else if的数量可以有任意多个。 最后的else语句不是必须的。 当有多个条件成立时,只会执行第一个满足条件的语句。 if-else多分支语句 知识讲解 当条件为真,则执行对应的语句,并终止整个多分支语句的执行; 条件都不成立,则执行else语句。 else if的数量可以有任意多个。 最后的else语句不是必须的。 当有多个条件成立时,只会执行第一个满足条件的语句。 4 选择题 int m=14; int n=12; if(m%2==0&&n%2==0)     cout<<"都是偶数"; else if(m%2==1&&n%2==1)     cout<<"都是奇数"; else     cout<<"不都是偶数或奇数"; (2023年9月)下面C++代码执行后的输出是( ) 都是偶数 都是奇数 不都是偶数或奇数 以上说法都不正确 A 14%2==0&&12%2==0 1&&1 1 真题解析 首先看if后面的条件是否成立,将m和n的值带入到表达式中就是14%2==0&&12%2==0,14%2的结果是0,12%2的结果也是0,两个条件都成立,所以转换成1&&1,那么结果为1条件成立,会输出都是偶数。 当有一个条件成立时,后面的语句不会再执行,所以选A 5 选择题 int m=14; int n=12; if(m%2&&n%2)     cout<<"都是偶数"; else if(m%2==1&&n%2==1)     cout<<"都是奇数"; else     cout<<"不都是偶数或奇数"; (2023年9月)下面C++代码执行后的输出是( ) 都是偶数 都是奇数 不都是偶数或奇数 以上说法都不正确 14%2&&12%2 0&&0 0 真题解析 首先看if后面的条件是否成立,将m和n的值带入到表达式中就是14%2&&12%2,14%2的结果是0,12%2的结果也是0,所以转换成0&&0,那么结果为0条件不成立,会继续执行下一个判断语句 6 选择题 int m=14; int n=12; if(m%2&&n%2)     cout<<"都是偶数"; else if(m%2==1&&n%2==1)     cout<<"都是奇数"; else     cout<<"不都是偶数或奇数"; (2023年9月)下面C++代码执行后的输出是( ) 都是偶数 都是奇数 不都是偶数或奇数 以上说法都不正确 C 14%2==1&&12%2==1 0&&0 0 真题解析 将m和n的值带入到表达式中就是14%2==1&&12%2==1,14%2的结果是0,12%2的结果也是0,两个条件都不成立,所以转换成0&&0,那么结果为0条件不成立。 两个条件都不成立,所以会执行Else后面的语句,所以选C 7 选择题 int m=7; if(m/5||m/3)     cout<<0; else if(m/3)     cout<<1; else if(m/5)     cout<<2; else     cout<<3; (2023年9月)下面C++代码执行后的输出是( ) 0 1 2 3 A 7/5||7/3 1||2 1 真题解析 首先看if后面的条件是否成立,将m的值带入到表达式中就是7/5||7/3,7/5的结果是1,7/3的结果是2,所以转换成1||2,那么结果为1条件成立,会输出0。所以选A 8 每月天数(2023年3月) 【问题描述】 小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编 程方法求出给定的月份有多少天。你能做到吗? 【输入描述】 输入一行,包含两个整数,分别表示一个日期的年、月。 【输出描述】 输出一行,包含一个整数,表示输入月份有多少天。 【样例输入1】 2022 1 【样例输出1】 31 【样例输入2】 2020 2 【样例输出2】 29 真题解析 接下来完成一道编程题,是2023年3月的真题每月天数 9 月份 天数 大月 1月、3月、5月、7月、8月、10月、12月 31天 小月 4月、6月、9月、11月 30天 平月 2月 平年:28天;闰年:29天 分析每个月份的天数 真题解析 月份分为大月、小月和平月,大约的月份都是31天,小月的月份都是30天,平月的天数根据平年和闰年觉得,如果是平年就是28天,如果是闰年就是29天 10 "四年一闰,百年不闰,四百年再闰" 能被4整除但是不能被100整除,或者能被400整除 y%4==0 y%100!=0 y%400==0 && || 判断闰年 真题解析 所以我们要判断输入的年份是平年还是闰年,闰年的判断条件是“四年一闰,百年不闰,四百年再闰”,转换成伪代码就是能被4整除但是不能被100整除,或者能被400整除。 能被4整除但是不能被100整除,这两个条件之间是并且的关系,两个条件都成立才是闰年;这两个条件整体和第三个条件是或者的关系,只要有一个成立那么就是闰年,转换成代码表示就是y%4==0&&y%100!=0||y%400==0 , 11 思路分析 if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)     cout<<31<<endl;// 大月 else if(m==4||m==6||m==9||m==11)     cout<<30<<endl; // 小月  ① 定义两个变量,输入年份和月份 int y,m; cin>>y>>m; bool leap=false; if(y%4==0&&y%100!=0||y%400==0)     leap=true; else if(leap)     cout<<29<<endl;// 闰年2月 else     cout<<28<<endl;// 平年2月 ② 判断月份,并输出对应的天数 ③ 判断闰年,输出二月份的天数 真题解析 思路分析: 首先定义两个变量,输入年份和月份,然后判断月份输出对应的天数,如果是1/3/5/7/9/12月那么就输出31天,否则如果是4/6/9/11月就输出30天,如果这两个条件都不成立那么说明月份是2月,此时需要对年份进行判断,定义一个布尔类型的变量初始值设置为flase,如果判断闰年的条件成立就将该变量的值改为true。最后判断该变量的值,如果成立说明是如年就输出29天,否则是平年就输出28天 12 写一写 #include <iostream> using namespace std; int main(){     int y,m;     cin>>y>>m;     bool leap=false;     // 判断闰年     if(y%4==0&&y%100!=0||y%400==0)         leap=true;     if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)         cout<<31<<endl;// 大月     else if(m==4||m==6||m==9||m==11)         cout<<30<<endl; // 小月     else if(leap)         cout<<29<<endl;// 闰年2月     else         cout<<28<<endl;// 平年2月     return 0; } 真题解析 switch语句 02 02 第二部分是switch语句 14 switch表达式结果必须为整型、字符型、布尔型; case后面不能是变量,必须为具体数值; case后面的数值可以是整数、字符、布尔值; case后面的数值不能重复; default语句是默认语句,当表达式的结果和所有case都不匹配时,执行default语句。 case 数值1: 语句1; break; case 数值2: 语句2; break; …… case 数值n: 语句n; break; default: 语句; break; switch(表达式){ } switch语法格式和注意事项 知识讲解 switch表达式结果必须为整型、字符型、布尔型; case后面不能是变量,必须为具体数值; case后面的数值可以是整数、字符、布尔值; case后面的数值不能重复; default语句是默认语句,当表达式的结果和所有case都不匹配时,执行default语句。 15 表达式 开始 case 数值1 语句1 break 结束 case 数值2 语句2 break case 数值3 语句3 break default 语句4 break 入口 终止 switch语句的流程图 知识讲解 计算表达式,根据计算结果找到满足的case,执行对应的语句,然后使用break终止程序,后面的case不会再被执行 switch语句的执行过程: 通过表达式的结果找到匹配的case分支或者default作为入口 直到遇到break,结束整个switch语句。 最后一条分支语句,有没有break均可。 16 break的作用是结束整个switch语句。 switch语句的执行过程: 通过表达式的结果找到匹配的case分支或者default作为入口 直到遇到break,结束整个switch语句。 最后一条分支语句,有没有break均可。 switch(表达式){ } case 数值1: 语句1; break; case 数值2: 语句2; break; …… case 数值n: 语句n; break; default: 语句; break; break关键字的作用 知识讲解 break的作用是结束整个switch语句。 switch语句的执行过程: 通过表达式的结果找到匹配的case分支或者default作为入口 直到遇到break,结束整个switch语句。 最后一条分支语句,有没有break均可。 17 if语句适合判断条件比较复杂,但是分支比较少的情况。 switch语句适合判断条件简单,但是分支比较多的情况。 switch语句只能针对某个表达式的值做出判断,不能直接判断某个范围。 不同选择结构的特点 知识讲解 每种选择结构都有不同的特点和使用场景: if语句适合判断条件比较复杂,但是分支比较少的情况。 switch语句适合判断条件简单,但是分支比较多的情况。 switch条件语句只能针对某个表达式的值做出判断,不能判断某个范围。 18 每月天数(2023年3月) 【问题描述】 小明刚刚学习了每月有多少天,以及如何判断平年和闰年,想到可以使用编 程方法求出给定的月份有多少天。你能做到吗? 要求:使用switch语句完成。 【输入描述】 输入一行,包含两个整数,分别表示一个日期的年、月。 【输出描述】 输出一行,包含一个整数,表示输入月份有多少天。 【样例输入1】 2022 1 【样例输出1】 31 【样例输入2】 2020 2 【样例输出2】 29 真题解析 这道题目使用switch语句也可以完成 19 switch(m){ case 1: cout<<31; break; case 3: cout<<31; break; case 5: cout<<31; break; case 7: cout<<31; break; case 8: cout<<31; break; case 10: cout<<31; break; case 12: cout<<31; break; case 4: cout<<30; break; case 6: cout<<30; break; case 9: cout<<30; break; case 11: cout<<30; break; case 2: 如果为闰年, 输出29天; 否则, 输出28天; break; } 执行语句相同 执行语句相同 思路分析 真题解析 当多个case所对应的执行语句相同时,可以将这些case进行合并 20 switch(表达式){ case 数值1: case 数值2: 语句1; break; case 数值3: case 数值4: 语句2; break; case 数值5: 语句3; break; ...... } 合并case语句语法格式 真题解析 多个case可以合并,多个case之间使用冒号隔开,将多个case执行的语句写在多个case下边 21 switch(m){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout<<31; break; case 4: case 6: case 9: case 11: cout<<30; break; case 2: 如果为闰年, 输出29天; 否则, 输出28天; break; } 执行相同语句的case分支合并 执行相同语句的case分支合并 思路分析 真题解析 这样我们可以将1/3/5/7/8/10/12月的case合并,只要是这几个月份就输出31,然后break 将4/6/9/11合并,只要是这几个月份就输出30,然后break 如果是2月,要进行判断,如果为闰年输出29天,否则输出28天,然后break 22 switch(m){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: cout<<31; break; case 4: case 6: case 9: case 11: cout<<30; break; case 2: y%4==0 && y%100!=0 || y%400==0 ? cout<<29 : cout<<28; break; } 思路分析 使用条件运算符 真题解析 判断平年闰年的方式跟之前讲解的是一样的,在这道题目中我们可以使用条件运算符进行判断,条件就是y%4==0&&y%100!=0||y%400==0?cout<<29,如果这个条件成立说明是闰年要输出29天,将输出语句写在问号后,否则输出28天,将输出语句写在冒号后 23 思路分析 ① 定义两个变量,输入年份和月份 int y,m; cin>>y>>m; ② 判断月份,并输出对应的天数 ③ 判断闰年,输出二月份的天数 switch(m){ case 1:case 3:case 5:case 7:case 8:case 10:case 12: cout<<31; break; case 4:case 6:case 9:case 11: cout<<30; break; } case 2: y%4==0&&y%100!=0||y%400==0?cout<<29:cout<<28; break; 真题解析 思路分析: 首先定义两个变量,输入年份和月份,然后判断月份输出对应的天数,如果是1/3/5/7/9/12月那么就输出31天,否则如果是4/6/9/11月就输出30天,如果这两个条件都不成立那么说明月份是2月,此时需要对年份进行判断,定义一个布尔类型的变量初始值设置为flase,如果判断闰年的条件成立就将该变量的值改为true。最后判断该变量的值,如果成立说明是如年就输出29天,否则是平年就输出28天 24 写一写 #include <iostream> using namespace std; int main(){     int y,m;     cin>>y>>m;     switch(m){         case 1:case 3:case 5:case 7:case 8:case 10:case 12:             cout<<31;             break;         case 4:case 6:case 9:case 11:             cout<<30;             break;         case 2:             y%4==0&&y%100!=0||y%400==0?cout<<29:cout<<28;             break;     }     return 0; } 真题解析 感谢你的学习 26 $$

资源预览图

编程能力等级认证  LESSON_07-分支结构2(课件)
1
编程能力等级认证  LESSON_07-分支结构2(课件)
2
编程能力等级认证  LESSON_07-分支结构2(课件)
3
编程能力等级认证  LESSON_07-分支结构2(课件)
4
编程能力等级认证  LESSON_07-分支结构2(课件)
5
编程能力等级认证  LESSON_07-分支结构2(课件)
6
相关资源
示范课
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。