c程序设计基础第三章c控制语句

上传人:ni****g 文档编号:592846046 上传时间:2024-09-23 格式:PPT 页数:72 大小:1.04MB
返回 下载 相关 举报
c程序设计基础第三章c控制语句_第1页
第1页 / 共72页
c程序设计基础第三章c控制语句_第2页
第2页 / 共72页
c程序设计基础第三章c控制语句_第3页
第3页 / 共72页
c程序设计基础第三章c控制语句_第4页
第4页 / 共72页
c程序设计基础第三章c控制语句_第5页
第5页 / 共72页
点击查看更多>>
资源描述

《c程序设计基础第三章c控制语句》由会员分享,可在线阅读,更多相关《c程序设计基础第三章c控制语句(72页珍藏版)》请在金锄头文库上搜索。

1、C+程序设计基础程序设计基础第第3 3章章 C+C+控制语句控制语句北京邮电大学信通院北京邮电大学信通院方莉方莉2第第3 3章章 C+C+控制语句控制语句v用计算机解决实际问题,首先要分析问题,用计算机解决实际问题,首先要分析问题,设计合适的算法,然后编程实现算法。设计合适的算法,然后编程实现算法。v主要介绍主要介绍C+C+控制语句和程序基本结构控制语句和程序基本结构使用基本结构实现简单算法使用基本结构实现简单算法3目录目录3.1 3.1 算法的基本控制结构算法的基本控制结构1 3.2 3.2 ifif选择语句选择语句2 3.33.3 switch switch选择语句选择语句3 3.4 3.

2、4 循环语句循环语句4 3.5 3.5 循环嵌套循环嵌套5 3.6 3.6 应用举例应用举例643.1 3.1 算法的基本控制结构算法的基本控制结构v算法算法 1 1、计算机执行的、计算机执行的操作操作 2 2、这些操作的、这些操作的顺序顺序v伪码伪码 采用类似计算机语言的分句格式,以自然语言采用类似计算机语言的分句格式,以自然语言描述算法。描述算法。53.1 3.1 算法的基本控制结构算法的基本控制结构v流程图:流程图:可以直观表示算法和程序执行的流程可以直观表示算法和程序执行的流程专用的图形符号组合表示算法和程序专用的图形符号组合表示算法和程序 开始开始/ /结束结束 执行执行 判断判断

3、联系联系63.1 3.1 算法的基本控制结构算法的基本控制结构v程序的三种基本控制结构程序的三种基本控制结构 (1 1)顺序结构)顺序结构 (2 2)选择结构)选择结构 (3 3)循环结构)循环结构73.1 3.1 算法的基本控制结构算法的基本控制结构v流程控制语句流程控制语句 选择语句:选择语句:if-elseif-else、switchswitch 循环语句:循环语句:whilewhile、for for 、dodowhilewhile 转向语句:转向语句:breakbreak、continuecontinue8v算法及其表示算法及其表示伪代码表示伪代码表示 类似于计算机语言的分句格式,以

4、少量关键词类似于计算机语言的分句格式,以少量关键词和自然语言形式描述。和自然语言形式描述。流程图表示流程图表示 以流程图符号表示程序的执行流程。以流程图符号表示程序的执行流程。3.1 3.1 算法的基本控制结构算法的基本控制结构9欧几里得算法描述举例欧几里得算法描述举例v辗转相除法求两个自然数辗转相除法求两个自然数m m和和n n的的最大公约数,假定最大公约数,假定mn mn v伪代码描述:伪代码描述: 流程图描流程图描述:述:1. input m,n2. r=m%n;3. while (r!=0) 3.1 m=n; 3.2 n=r; 3.3 r=m%n;4. output n;10目录目录3

5、.1 3.1 算法的基本控制结构算法的基本控制结构1 3.2 3.2 ifif选择语句选择语句2 3.33.3 switch switch选择语句选择语句3 3.4 3.4 循环语句循环语句4 3.5 3.5 循环嵌套循环嵌套5 3.6 3.6 应用举例应用举例6113.2 3.2 ifif选择语句选择语句vIf-elseIf-else 1 1、没有、没有elseelse分支分支 2 2、双分支、双分支 3 3、多分支、多分支 4 4、if if 语句的嵌套语句的嵌套123.2 3.2 ifif选择语句选择语句v1 1、没有、没有elseelse分支分支: : 有条件执行特定的操作有条件执行特

6、定的操作 例如:比较例如:比较x x和和y y的大小,如果的大小,如果x x大则输出大则输出x x的值的值if (if (表达式表达式) ) 语句;语句;if ( xy ) if ( xy ) coutxendl; coutxy ) if ( xy ) coutxendl; coutxendl;elseelse coutyendl; coutyendl;14例例3.1 3.1 润年润年v任意输入一个任意输入一个4 4位整数的年份位整数的年份,判断该年是否是润,判断该年是否是润年?年?润润年年是是指指年年份份能能被被4 4整整除除的的那那些些年年,但但不不包包括能被括能被100100整除而不能被

7、整除而不能被400400整除的年整除的年15#include #include using namespace std;using namespace std;void main()void main() int year; int year; cinyear; cinyear; if (year % 4=0) & if (year % 4=0) & !(year %100 = 0) & (year % 400!=0) !(year %100 = 0) & (year % 400!=0) cout cout润年润年endl;endl; else else cout cout不是润年不是润年en

8、dl;endl; 例例3.1 3.1 润年润年163.2 3.2 ifif选择语句选择语句v3 3、多分支:多种选择、多分支:多种选择if (if (表达式表达式1)1) 语句语句1 1; else if (else if (表达式表达式2)2) 语句语句2 2; else if (else if (表达式表达式3)3) 语句语句3 3; elseelse 语句语句n;n;F17#include #include using namespace std;using namespace std;void main()void main() int x; int x; cinx; cinx; if

9、(x=90) if(x=90) coutx=x coutx=x 优秀优秀endl;=80) else if(x=80) coutx=x coutx=x 良好良好endl;=60) else if(x=60) coutx=x coutx=x 合格合格endl;endl; else else coutx=x coutx=x 不及格不及格endl;endl; 例:输出学生的成绩例:输出学生的成绩183.2 3.2 ifif选择语句选择语句v4 4、if if 语句的嵌套语句的嵌套if (if (表达式表达式1)1) if (if (表达式表达式2)2) 语句语句1 1 elseelse 语句语句2

10、2elseelse if ( if (表达式表达式3) 3) 语句语句3 3 elseelse 语句语句4 4193.2 3.2 ifif选择语句选择语句v4 4、if if 语句的嵌套语句的嵌套20例:输出例:输出a,b,ca,b,c中较大的数中较大的数#include #include using namespace std;using namespace std;void main()void main() int a,b,c; int a,b,c; cinabc; cinabc; if (ab) if (ab) if (ac) coutac) coutaendl; else coutc

11、endl;else coutcc) coutbc) coutbendl; else coutcendl;else coutcendl; coutb?(ac?a:c)coutb?(ac?a:c):(bc?b:c:(bc?b:c ) ) ););213.2 3.2 ifif选择语句选择语句v注意:二义性注意:二义性int x=-1;int x=-1;if (x0)if (x0) if (x50) if (x50) coutx is 50endl; coutx is 50endl; else else cout cout x is =0x is =0 endl;x; cinx; switch(x/1

12、0) switch(x/10) case 10:case 10: case 9:cout case 9:cout优秀优秀endl;endl; break; break; case 8: cout case 8: cout良好良好endl;endl; break; break; case 7:case 7: case 6: cout case 6: cout合格合格endl;endl; break; break; default: cout default: cout不及格不及格endl;endl; 例:输出学生的成绩例:输出学生的成绩100958075605527vswitchswitch:多

13、分支选择语句,常量表达式不同取值,执:多分支选择语句,常量表达式不同取值,执行不同操作。行不同操作。v注意:注意:常量表达式的值可以是常量表达式的值可以是字符型、整型、枚举型字符型、整型、枚举型,不能是实型不能是实型;通常,也只是一个常量。不能放置条件不等式或变量通常,也只是一个常量。不能放置条件不等式或变量. .各各casecase值不同;值不同;各个各个casecase的先后顺序不影响执行结果,由编的先后顺序不影响执行结果,由编程者合理安排。程者合理安排。switchswitch语句每当找到匹配的常量表达式,则从此标号开始执语句每当找到匹配的常量表达式,则从此标号开始执行下去,不再进行判断

14、,即将此后的其它行下去,不再进行判断,即将此后的其它casecase下的语句也都下的语句也都执行。直到碰到执行。直到碰到breakbreak语句或语句或switchswitch语句结束。语句结束。一般来说,在每个一般来说,在每个casecase的执行语句结束处,应该加上的执行语句结束处,应该加上breakbreak语语句。句。可以共用一个可以共用一个breakbreak,breakbreak终止语句执行,并跳出终止语句执行,并跳出switchswitch循循环;环;提供提供defaultdefault情况,提醒编程者需要处理异常条件,放在最后。情况,提醒编程者需要处理异常条件,放在最后。3.3

15、 switch3.3 switch选择语句选择语句28目录目录3.1 3.1 算法的基本控制结构算法的基本控制结构1 3.2 3.2 ifif选择语句选择语句2 3.33.3 switch switch选择语句选择语句3 3.4 3.4 循环语句循环语句4 3.5 3.5 循环嵌套循环嵌套5 3.6 3.6 应用举例应用举例6293.4 3.4 循环语句循环语句v三种基本语法三种基本语法1 1、 while while 语句语句2 2、 do dowhile while 语句语句3 3、 for for 语句语句30#include #include #include #include usi

16、ng namespace std;using namespace std;void main()void main() coutsetfill(*) coutsetfill(*) setw(2)n setw(2)n setw(3)n setw(3)n setw(4)n setw(4)n setw(5)n setw(5)n setw(6)n setw(6)n setw(7)n setw(7)n setw(8)n; setw(8)n; * * * * * * *3.4 3.4 循环语句循环语句31# #include include #include #include using namespac

17、e std;using namespace std;void main()void main() int i=2; int i=2; coutsetfill(*); coutsetfill(*); while(i=8) while(i=8) coutsetw(i)n; coutsetw(i)n; i+; i+; * * * * * * *循环变量循环变量循环体循环体循环控制循环控制条件条件3.4 3.4 循环语句循环语句323.4 3.4 循环语句循环语句v主要包括主要包括3 3个部分:个部分:1 1、循环控制条件:、循环控制条件: 判断循环操作是否进行的条件;判断循环操作是否进行的条件;2

18、2、循环体:、循环体: 重复进行的操作;重复进行的操作;3 3、循环控制变量:、循环控制变量: 记录循环体执行的次数,或控制循环的结束条件。记录循环体执行的次数,或控制循环的结束条件。333.4 3.4 循环语句循环语句vwhilewhile循环语句循环语句while(while(表达式)表达式) 循环体语句;循环体语句;34 # #include include using namespace std; using namespace std; void main() void main() int i=1; int i=1; while (i=9)while (i=9) coutiendl

19、; coutiendl; i+; i+; cout cout“循环结束循环结束”endl;endl; 运行结果:123456789循环结束循环结束例例3.5:3.5:编程循环输出编程循环输出1-91-9?35例例3.6:3.6:编程计算编程计算1+2+3+1+2+3+.+.+1010的值的值 # #include include using namespace std; using namespace std; void main() void main() int sum=0,i=0; int sum=0,i=0; while(i=10)while(i=10) sum+=i; sum+=i;

20、 i+; i+; coutsumendl; coutsumendl; 结果:结果:555536例例3 3.7.7:打印可视字符:打印可视字符#include#includeusing namespace std;using namespace std;void main()void main() unsigned char ch=32; unsigned char ch=32; while(ch127) while(ch127) cout(int)chtcht; cout(int)chtcht; ch+; ch+; v可显示的字符可显示的字符的的ASCIIASCII编码从编码从3232到到12

21、612637# #include include using namespace std;using namespace std;void main()void main() int k=1,sum=0,n;int k=1,sum=0,n;cout0):;cout0):;cinn; cinn; while(k=n)while(k0) if(n0) coutsum/nendl;coutsum/nendl; else else coutncoutn不能不能=0=0endl;endl; 例例3 3.8.8:编程计算:编程计算 的值的值38vdo.whiledo.while循环语句循环语句v至少执行一

22、次至少执行一次 do do 循环体语句;循环体语句; while(while(表达式表达式););3.4 3.4 循环语句循环语句39# #include include #include #include using namespace std;using namespace std;void main()void main() int i=2; int i=2; coutsetfill(*); coutsetfill(*); while(i=8) while(i=8) coutsetw(i)n; coutsetw(i)n; i+; i+; * * * * * * *dodo coutset

23、w(i)n; coutsetw(i)n; i+; i+; while(i=8); while(i=8);40# #include include using namespace std;using namespace std;void main()void main() int k=1,sum=0,n;int k=1,sum=0,n;cout0):;cout0):;cinn; cinn; while(k=n) while(k0) if(n0) coutsum/nendl;coutsum/nendl;else else coutncoutn不能不能=0=0endl;endl; dodo sum=

24、sum+k*k; sum=sum+k*k; k+; k+;while(k=n);while(k=n); 例例3 3.8.8:编程计算:编程计算 的值的值413.4 3.4 循环语句循环语句vforfor循环语句循环语句 v循环结构循环结构 1 1、表达式、表达式1 1 循环变量初始化循环变量初始化; 2 2、表达式、表达式2 2 循环控制条件;循环控制条件; 3 3、表达式、表达式3 3 循环变量的变化循环变量的变化;for (for (表达式表达式1; 1; 表达式表达式2; 2; 表达表达式式3)3) 循环体;循环体;42 # #include include using namespac

25、e std; using namespace std; void main() void main() for (int i=1;i10;i+)for (int i=1;i10;i+) coutiendl; coutiendl; coutcout“循环结束循环结束”endl;endl; 运行结果运行结果: :1 12 23 34 45 56 67 78 89 9循环结束循环结束例例3.5:3.5:编程循环输出编程循环输出1-91-9?43#include #include using namespace std;using namespace std;void main()void main(

26、) int sum=0,i; int sum=0,i; for (i=1;i=10;i+)for (i=1;i=10;i+) sum+=i; sum+=i; coutsumendl; coutsumendl; 运行结果:运行结果:55例例3.6:3.6:编程计算编程计算1+2+3+1+2+3+.+.+1010的值的值44# #include include #include #include using namespace std;using namespace std;void main()void main() coutsetfill(*); coutsetfill(*); * * * *

27、 * * *for(int i=2;i=8;i+) for(int i=2;i=8;i+) coutsetw(i)n;coutsetw(i)n;例例453.4 3.4 循环语句循环语句forfor语句语句v1 1、 1可以省略可以省略 for(int i=1 ; i=9 ; i+)for(int i=1 ; i=9 ; i+) 循环体;循环体; int i=1int i=1; for( ; i=9 ; i+) for( ; i=9 ; i+) 循环体;循环体;463.4 3.4 循环语句循环语句forfor语句语句v2 2、 2可以省略可以省略 for(int i=1; i=9; i+) fo

28、r(int i=1; i=9; i+) 循环体;循环体; for(int i=1; ; i+) for(int i=1; ; i+) if (i=9) if (i=9) 循环体;循环体; else else break; / break; /跳转语句,用来跳出循环跳转语句,用来跳出循环 473.4 3.4 循环语句循环语句forfor语句语句v3 3、 3可以省略可以省略 for(int i=1; i=9; i+) for(int i=1; i=9; i+) 循环体;循环体; for(int i=1; i=9; ) for(int i=1; i=9; ) 循环体;循环体; i+;i+; 483

29、.4 3.4 循环语句循环语句forfor语句语句v4 4、 3同时省略同时省略 for(int i=1; i=9; i+) for(int i=1; i=9; i+) 循环体;循环体; int i=1; int i=1; for(; i=9; ) for(; i=9; ) 循环体;循环体; i+; i+; 493.4 3.4 循环语句循环语句forfor语句语句v5 5、极端情况,可实现无限循环、极端情况,可实现无限循环 for( ; ; ) for( ; ; ) 循环体;循环体; v注注意意:一一般般还还是是使使用用完完整整的的forfor结结构构形形式式,程程序序的的可读性更好。可读性更

30、好。50例例3.9:3.9:判断输出结果?判断输出结果?# #include include using namespace std;using namespace std;void main()void main() for(int i=0,j=10,k=0; ij; i+,j-) for(int i=0,j=10,k=0; ij; i+,j-)k+=i*j;k+=i*j;coutkendl;coutkendl; 分析:i j k0 10 01 9 92 8 253 7 464 6 705 5 跳出513.4 3.4 循环语句循环语句1 1、forfor: 最最适适合合循循环环次次数数固固定

31、定,循循环环规规律律非非常常明明显显程程序。序。2 2、whilewhile: 使用最多最频繁的循环结构,具有使用最多最频繁的循环结构,具有普适性普适性。3 3、do_whiledo_while: 最适合最适合至少循环一次至少循环一次的循环结构。的循环结构。52转向语句转向语句v1 1、breakbreak语句语句用用途途:常常用用在在whilewhile、do-whiledo-while、forfor和和switchswitch语语句句中中,用来用来跳出跳出循环或循环或switchswitch语句。语句。v2 2、continuecontinue语句语句用用途途: 用用于于循循环环语语句句中

32、中,结结束束本本次次循循环环,进进行行下下一一次次循环;循环;即即跳过跳过循环体中尚未执行的部分。循环体中尚未执行的部分。53# #include include using namespace std;using namespace std;void main()void main() int sum=0; int sum=0; for (int i=1;i10;i+) for (int i=1;i10;i+) if (i % 3=0) if (i % 3=0) break break; ; sum+=i; sum+=i; coutsumendl; coutsumendl; 分析分析i i

33、sumsum1 11 12 32 33 3 跳出跳出 例例3.10:3.10:判断输出结果?判断输出结果?54# #include include using namespace std;using namespace std;void main()void main() int sum=0; int sum=0; for (int i=1;i10;i+)for (int i=1;i10;i+) if (i % 3=0) if (i % 3=0) continuecontinue; ; sum+=i; sum+=i; coutsumendl; coutsumendl; 分析分析i i sums

34、um1 11 12 32 33 33 34 4 7 75 5 12 126 6 12 127 7 19 198 8 27 279 9 27 271010 跳出跳出例:判断输出结果?例:判断输出结果?55目录目录3.1 3.1 算法的基本控制结构算法的基本控制结构1 3.2 3.2 ifif选择语句选择语句2 3.33.3 switch switch选择语句选择语句3 3.4 3.4 循环语句循环语句4 3.5 3.5 循环嵌套循环嵌套5 3.6 3.6 应用举例应用举例6563.5 3.5 循环嵌套循环嵌套v编程输出国际象棋棋盘编程输出国际象棋棋盘# #include include usin

35、g namespace std;using namespace std;void main() void main() for (int i=0;i8;i+)for (int i=0;i8;i+) for (int j=0;j8;j+)for (int j=0;j8;j+) if (i+j)%2=0) if (i+j)%2=0) cout; cout; else else cout ; cout ; coutn; coutn; j :0 1 2 3 4 5 6 70123456757A:for (i=0,k=1;i10;i+) if (i%5) k=i*10; else coutk:k;B:f

36、or (i=0,k=1;i10;i+) if (i%5) k=i*10; coutk:k;D:for (i=0,k=1;i10;i+) if (i%5) k=i*10;coutk:k; C:for (i=0,k=1;i10;i+) if (i%5!=0) k=i*10;coutk:k;思考:写出每个程序各输出结果思考:写出每个程序各输出结果58思考思考v题目题目: : 使用使用f for循环输出如下图形:循环输出如下图形: 59#include #include using namespace std;using namespace std;void main()void main() for

37、 (int i=1;i=7;i+) for (int i=1;i=7;i+) for (int j=1; j=7-i; j+) for (int j=1; j=7-i; j+) cout ; cout ; for (j=1; j=i; j+) for (j=1; j=i; j+) cout*; cout*; coutendl; cout0, -4ac0, 有两个不等的实根有两个不等的实根; ;(4) b(4) b2 2-4ac0, -4ac0, 有两个共轭复根有两个共轭复根. .所以,程序中将使用选择结构分别实现各种情况。所以,程序中将使用选择结构分别实现各种情况。3.6 3.6 应用举例应用

38、举例1 162n注意注意: :由于由于a,b,ca,b,c数据类型为浮点数,当数据类型为浮点数,当b b2 2-4ac-4ac很小很小时,可近似为时,可近似为0 0。因此判断时若。因此判断时若=10=10-6 -6 ,可认为是,可认为是0 0v具体代码请看见课本具体代码请看见课本P66.P66.3.6 3.6 应用举例应用举例1 1633.6 3.6 应用举例应用举例2 2v任意输入一个整数,判断是否是素数?任意输入一个整数,判断是否是素数?v问题:什么是素数?问题:什么是素数?指指在在一一个个大大于于1 1的的自自然然数数中中,除除了了1 1和和此此整整数数自自身身外外,没没法被其他自然数整

39、除的数。法被其他自然数整除的数。 64# #include include using namespace std;using namespace std;void main()void main() int n,i; int n,i; coutcoutn; cinn; for (i=2;in;i+) for (i=2;in;i+)if (n%i=0)if (n%i=0) break; break; if (in) if (in)coutncoutn不是素数!不是素数! n;n;elseelsecoutncoutn是素数是素数 n;n; 3.6 3.6 应用举例应用举例2:2:素数素数65#

40、#include include #include #include using namespace std;using namespace std;void main()void main() for(int k=2;k100;k+)for(int k=2;k100;k+) for (int i=2;ik;i+)for (int i=2;i=k) coutk=k) coutkt; 输出输出2-1002-100之间的素数之间的素数66输出输出2-1002-100之间的素数之间的素数v素数普遍公式:公元前素数普遍公式:公元前250250年同样是古希腊的数学年同样是古希腊的数学家埃拉托塞尼提出一种

41、筛法:家埃拉托塞尼提出一种筛法: “要得到不大于某要得到不大于某个自然数个自然数N N的所有素数,只要的所有素数,只要在在2-N2-N中将不大于中将不大于N N的素数的素数的倍数全部划去即可的倍数全部划去即可”。67# #include include #include #include using namespace std;using namespace std;void main()void main() for(int k=2;k100;k+)for(int k=2;k100;k+) for (int i=2;ik;i+)for (int i=2;i=k) coutk=k) coutk

42、t; 输出输出2-1002-100之间的素数之间的素数for(int k=2;k100;k+)for(int k=2;k100;k+) int n=sqrt(k);int n=sqrt(k);for (int i=2;i=for (int i=2;in) (in) coutkt;coutkt; 683.6 3.6 应用举例应用举例3 3v题题目目: : 任任意意输输入入一一个个整整数数,按按位位翻翻转转输输出出。例如输入例如输入124124,输出,输出421421。69# #include include using namespace std;using namespace std;void

43、 main()void main() int i, n, result=0; int i, n, result=0;coutcoutn;cinn;coutcout按位翻转的结果为:按位翻转的结果为:;while (n!=0)while (n!=0)i =n % 10;i =n % 10;result=result*10+i;result=result*10+i; n /= 10; n /= 10; coutresultendl; coutresultendl;3.6 3.6 应用举例应用举例3 3v题目题目: : 任意输入任意输入一个整数,按位一个整数,按位翻转输出。例如翻转输出。例如输入输入124124,输出,输出421421。70总结总结v三种基本结构:三种基本结构:顺序、选择和循环顺序、选择和循环v流流程程图图和和伪伪码码,帮帮助助设设计计算算法法、完完善善算算法法,增增强强算法的可读性算法的可读性71作业作业vP70P70,第,第10,11,1310,11,13题;题;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号