(精品)第 2 章(1)━━流程控制语句.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(精品)第 2 章(1)━━流程控制语句.ppt》由会员分享,可在线阅读,更多相关《(精品)第 2 章(1)━━流程控制语句.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+程序设计程序设计第第2章章(1)流程控制语句流程控制语句1主要内容主要内容l算法描述的三种基本结构算法描述的三种基本结构l分支结构分支结构 if 条件语句条件语句l分支结构分支结构 if 语句的嵌套语句的嵌套l多分支结构多分支结构 switch 开关语句开关语句l循环结构循环结构 while 循环语句循环语句l循环结构循环结构 do-while 循环语句循环语句l循环结构循环结构 for 循环语句循环语句l循环结构循环结构 循环的嵌套循环的嵌套l循环结构循环结构 循环体中循环体中 break、continue 语句语句lgoto语句、语句标号语句、语句标号lexit()函数、函数、abor
2、t()函数函数lreturn语句语句2算法描述的三种基本结构算法描述的三种基本结构l程序构造的基本方法:程序构造的基本方法:程序程序 =数据结构(数据的描述)数据结构(数据的描述)+算法(操作的步骤)算法(操作的步骤)l在程序设计中,在程序设计中,任何算法都可以分解为三种基本结构和它们的组合:任何算法都可以分解为三种基本结构和它们的组合:顺序结构顺序结构 分支结构分支结构 循环结构循环结构ABC条件条件A假假真真单向分支单向分支条件条件AB真真假假双向分支双向分支条件条件ABC多向分支多向分支条件条件A真真假假先判断型循环先判断型循环条件条件A真真假假后判断型循环后判断型循环3分支结构分支结构
3、 if 条件语句条件语句l条件语句(条件语句(if-else):):格式:格式:if (表达式表达式 )内嵌语句内嵌语句1 else 内嵌语句内嵌语句2 表达式表达式可以是可以是C+中任意合法的表达式。中任意合法的表达式。内嵌语句内嵌语句可以是可以是C+中任意合法的单一语句或复合语句。中任意合法的单一语句或复合语句。执行流程:执行流程:先求解先求解 if 后面表达式的值。后面表达式的值。若表达式的值为若表达式的值为 true(非零),则执行(非零),则执行 if 后面的内嵌语句后面的内嵌语句1。若表达式的值为若表达式的值为 false(零)(零),当无,当无 else 子句时,则跳过整个子句时
4、,则跳过整个 if 语句;当有语句;当有 else子句时,则执行子句时,则执行 else 后面的内嵌语句后面的内嵌语句2。表达式表达式语句语句1假假真真单向分支(无单向分支(无else子句)子句)表达式表达式语句语句1语句语句2真真假假双向分支(有双向分支(有else子句)子句)4【例例】(输入一个年份,输出该年是否闰年。)(输入一个年份,输出该年是否闰年。)#include void main()int year;cout year;if (year%4=0&year%100!=0|year%400=0 )cout year “年是闰年年是闰年!n”;else cout year “年不是闰
5、年年不是闰年!n”;第第1次运行:次运行:请输入年份:请输入年份:2000 2000年是闰年!年是闰年!第第2次运行:次运行:请输入年份:请输入年份:1900 1900年不是闰年!年不是闰年!5分支结构分支结构 if 语句的嵌套语句的嵌套lif 语句的嵌套结构:语句的嵌套结构:在在 if-else 结构的两个分支中,其内嵌的语句可以是结构的两个分支中,其内嵌的语句可以是C+中任意合法的语句,中任意合法的语句,if语句语句本身当然也可以作为内嵌语句出现在另一个本身当然也可以作为内嵌语句出现在另一个 if-else 结构的两个分支中。结构的两个分支中。一般格式:一般格式:if (表达式表达式1)i
6、f (表达式表达式2)语句语句1 else 语句语句2 else if (表达式表达式3)语句语句3 else 语句语句4 6分支结构分支结构 if 语句的嵌套语句的嵌套 在在 if-else 语句的嵌套结构中,语句的嵌套结构中,else 和和 if 配对的规则是配对的规则是“就近配对就近配对”,即:,即:else总总是与最近的那个没有配过对的是与最近的那个没有配过对的 if 配对!否则需要加用配对!否则需要加用“”来保证逻辑配对关系。来保证逻辑配对关系。【例例】if (表达式表达式1)语句语句1;if (表达式表达式2)语句语句2;else 语句语句3;【例例】if (表达式表达式1)语句语
7、句1;if (表达式表达式2)语句语句2;else 语句语句3;用用 if 语句实现多向分支,常用阶梯型嵌套结构:语句实现多向分支,常用阶梯型嵌套结构:if (表达式表达式1)语句语句1;else if (表达式表达式2)语句语句2;else if (表达式表达式3)语句语句3;else else if (表达式表达式n-1)语句语句n-1;else 语句语句n;7【例例】#include void main()int a,b,c;cout a b c;if (a=b&a=c)cout “最大数:最大数:”a=a&b=c)cout “最大数:最大数:”b=a&c=b)cout “最大数:最大数
8、:”c endl;#include void main()int a,b,c;cout a b c;if (a=b&a=c)cout “最大数:最大数:”a=c)cout “最大数:最大数:”b endl;else cout “最大数:最大数:”c endl;第第1次运行:次运行:请输入三个整数:请输入三个整数:23 78 -5 最大数:最大数:78第第2次运行:次运行:请输入三个整数:请输入三个整数:18 36 36 最大数:最大数:36最大数:最大数:36第第3次运行:次运行:请输入三个整数:请输入三个整数:18 18 18 最大数:最大数:18最大数:最大数:18最大数:最大数:18第第
9、1次运行:次运行:请输入三个整数:请输入三个整数:23 78 -5 最大数:最大数:78第第2次运行:次运行:请输入三个整数:请输入三个整数:18 36 36 最大数:最大数:36第第3次运行:次运行:请输入三个整数:请输入三个整数:18 18 18 最大数:最大数:188#include void main()int a,b,c,max;cout a b c;if (a=b&a=c)max=a;else if (b=c)max=b;else max=c;cout “最大数:最大数:”max endl;#include void main()int a,b,c,max;cout a b c;m
10、ax=a=(max=b=c?b:c)?a:max;cout “最大数:最大数:”max endl;第第1次运行:次运行:请输入三个整数:请输入三个整数:23 78 -5 最大数:最大数:78第第2次运行:次运行:请输入三个整数:请输入三个整数:18 36 36 最大数:最大数:36第第3次运行:次运行:请输入三个整数:请输入三个整数:18 18 18 最大数:最大数:189【例例】(求不及格、(求不及格、6069、7079、8089、90分以上的各个档次的人数。)分以上的各个档次的人数。)#include void main()int x,n=0,c9=0,c8=0,c7=0,c6=0,c0=
11、0;cout x;while(cin)n+;if (x=90)c9+;else if (x=80)c8+;else if (x=70)c7+;else if (x=60)c6+;else c0+;cin x;cout “总人数总人数=”n endl;cout “90分以上人数分以上人数=”c9 endl;cout “8089分之间人数分之间人数=”c8 endl;cout “7079分之间人数分之间人数=”c7 endl;cout “6069分之间人数分之间人数=”c6 endl;cout “不及格人数不及格人数=”c0 endl;运行:运行:请输入三个整数:请输入三个整数:83 78 853
12、892 79 70 99 87 653994 86 79 72 81 844086 88 98 79 41按按Ctrl+Z,再按,再按 42总人数总人数=224390分以上人数分以上人数=4448089分之间人数分之间人数=8457079分之间人数分之间人数=6466069分之间人数分之间人数=147不及格人数不及格人数=310多分支结构多分支结构 switch 开关语句开关语句l开关语句(开关语句(switch):):格式:格式:switch (表达式表达式)case 常量表达式常量表达式1 :语句序列语句序列1 break语句语句 case 常量表达式常量表达式2 :语句序列语句序列2 b
13、reak语句语句 case 常量表达式常量表达式3 :语句序列语句序列3 break语句语句 case 常量表达式常量表达式n :语句序列语句序列n break语句语句 default:语句序列:语句序列n+1 11多分支结构多分支结构 switch 开关语句开关语句 执行流程:执行流程:先求解先求解 switch 后面表达式的值,后面表达式的值,该表达式的值只能是整型、字符型、布尔型、枚举该表达式的值只能是整型、字符型、布尔型、枚举型等开关值(离散值),切记!型等开关值(离散值),切记!不能是实型这样的连续值。不能是实型这样的连续值。从上往下在从上往下在 各个各个 case 分支的常量表达式
14、值中,寻找与该值相等的分支作为执行入分支的常量表达式值中,寻找与该值相等的分支作为执行入口,并从该分支的语句序列开始执行下去,其后的每个口,并从该分支的语句序列开始执行下去,其后的每个 case 分支(包括分支(包括 default 分分支)中的语句序列都有可能执行到,支)中的语句序列都有可能执行到,直到遇到直到遇到 break 语句才跳出语句才跳出 switch 语句语句,或遇,或遇到到 switch 语句的结束括号语句的结束括号“”为止。为止。当所有当所有 case 分支的常量表达式值均与该值不相等时,若有分支的常量表达式值均与该值不相等时,若有 default 分支,则执行其分支,则执行
15、其后的语句序列,否则跳出后的语句序列,否则跳出 switch 语句。语句。12多分支结构多分支结构 switch 开关语句开关语句 关于关于 switch 语句的几点说明:语句的几点说明:case 分支中的语句序列是可选的,可以一个语句都没有、可以是一个语句、也可分支中的语句序列是可选的,可以一个语句都没有、可以是一个语句、也可以是多个语句,当为多个语句时,不需要加花括号以是多个语句,当为多个语句时,不需要加花括号“”。case 分支中的分支中的 break 语句也是可选的,当没有语句也是可选的,当没有 break 语句时,该语句时,该 case 分支只作分支只作为为 switch 语句的执行
16、入口,执行完该分支后,还将继续执行其后的所有分支(包括语句的执行入口,执行完该分支后,还将继续执行其后的所有分支(包括default 分支),直到遇到分支),直到遇到 break 语句才跳出语句才跳出 switch 语句。语句。每个每个 case 分支中的常量表达式值必须各不相同,否则将引起歧义。分支中的常量表达式值必须各不相同,否则将引起歧义。允许多个允许多个 case 分支中的常量表达式对应同一个语句序列。分支中的常量表达式对应同一个语句序列。注意:不是所有的多分支问题都可以用注意:不是所有的多分支问题都可以用 switch 语句来完成,因为语句来完成,因为 switch 语句中的语句中的
17、表达式取值只能是开关值,不能是连续量。表达式取值只能是开关值,不能是连续量。13【例例】(输入年份和月份,输出该年该月的总天数。)(输入年份和月份,输出该年该月的总天数。)#include void main()int year,month,days;cout year month;switch(month)case 2:if(year%4=0&year%100!=0|year%400=0)days=29;else days=28;break;case 1:case 3:case 5:case 7:case 8:case 10:case 12:days=31;break;case 4:case
18、 6:case 9:case 11:days=30;break;default :cout “月份输入错误月份输入错误!n”;return;cout year “年年”month “月总天数月总天数=”days endl;第第2次运行:次运行:请输入三个整数:请输入三个整数:2000 8 2000年年2月总天数月总天数=30第第4次运行:次运行:请输入三个整数:请输入三个整数:1900 2 2000年年2月总天数月总天数=29第第3次运行:次运行:请输入三个整数:请输入三个整数:2000 2 2000年年2月总天数月总天数=28第第1次运行:次运行:请输入三个整数:请输入三个整数:2000 6
19、 2000年年2月总天数月总天数=3014【例例】(求不及格、(求不及格、6069、7079、8089、90分以上的各个档次的人数。)分以上的各个档次的人数。)#include void main()int x,n=0,c9=0,c8=0,c7=0,c6=0,c0=0;cout x;while(cin)n+;switch (x/10)case 10 :case 9 :c9+;break;case 8 :c8+;break;case 7 :c7+;break;case 6 :c6+;break;default :c0+;cin x;cout “总人数总人数=”n endl;cout “90分以上
20、人数分以上人数=”c9 endl;cout “8089分之间人数分之间人数=”c8 endl;cout “7079分之间人数分之间人数=”c7 endl;cout “6069分之间人数分之间人数=”c6 endl;cout “不及格人数不及格人数=”c0 endl;运行:运行:请输入三个整数:请输入三个整数:83 78 853892 79 70 99 87 653994 86 79 72 81 844086 88 98 79 41按按Ctrl+Z,再按,再按 42总人数总人数=224390分以上人数分以上人数=4448089分之间人数分之间人数=8457079分之间人数分之间人数=646606
21、9分之间人数分之间人数=147不及格人数不及格人数=315循环结构循环结构 while 循环语句循环语句l循环语句(循环语句(while):):格式:格式:while (表达式表达式 )循环体循环体 ;表达式表达式可以是可以是C+中任意合法的表达式。中任意合法的表达式。循环体循环体可以是可以是C+中任意合法的单一语句、空语句、复合语句。中任意合法的单一语句、空语句、复合语句。执行流程:执行流程:先求解先求解 while 后面表达式的值。后面表达式的值。若表达式的值为若表达式的值为 true(非零),则执行(非零),则执行 while 后面的循环体,然后再回到后面的循环体,然后再回到 while
22、,判断下次循环是否进行,如此反复判断下次循环是否进行,如此反复 。若表达式的值为若表达式的值为 false(零)(零),则循环结束,跳出整个,则循环结束,跳出整个 while 语句。语句。表达式表达式循环体循环体真真假假先判断型循环先判断型循环 while 语句的执行流程语句的执行流程16【例例】(将整数反转输出。将整数反转输出。)#include void main()int n;cout n;while (n!=0)cout n%10;n=n/10;cout endl;运行:运行:请输入一个整数:请输入一个整数:32768 86723【例例】(输入一行字符,按顺序依次输出(输入一行字符,按
23、顺序依次输出。)#include void main()char c;cout “请输入一行字符:请输入一行字符:”;while (c=cin.get()!=n)cout c;cout endl;#include void main()char c;cout c)cout c;cout endl;运行:运行:请输入一行字符:请输入一行字符:I am a student.I am a student.运行:运行:请输入一行字符:请输入一行字符:I am a student.Iamastudent.按按Ctrl+Z,再按,再按 17【例例】(键盘输入若干行英文句子,统计其中的字符个数、单词个数、行
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品第 章1流程控制语句 精品 流程 控制 语句
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内