《C语言4分支结构课件ppt.ppt》由会员分享,可在线阅读,更多相关《C语言4分支结构课件ppt.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去第 4 章 选择型程序设计1(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去4.1 程序的灵魂算法算法(algorithm):计算机求解某一问题而采用的具体方法、步骤。两大类计算机算法:数值运算算法、非数值运算算法 (求数值解、成熟)(事务管理、广泛)算法特征:1有穷性
2、2确定性 3输入 4输出 5有效性著名计算机科学家沃思著名计算机科学家沃思(Nikiklaus WirthNikiklaus Wirth)公式公式:数据结构数据结构 算法算法 程序程序描述数据的类型、组织结构描述对数据的操作步骤算法的概念算法的概念2(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去(1 1)带序号的自然语言描述)带序号的自然语言描述 (易懂但不直观,不严格)(易懂但不直观,不严格)(2)流程图:灵活、自由、形象、直观,可表示任何算法流程图:
3、灵活、自由、形象、直观,可表示任何算法 输入/输出处理判断开始/结束连接符数据流(3 3)N-SN-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤 都写在一个大矩形框里(描述简单,符合结构化的思想)都写在一个大矩形框里(描述简单,符合结构化的思想)(4 4)伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法)伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法 (方便、易懂、便于向计算机语言过渡)(方便、易懂、便于向计算机语言过渡)AAPAPPTFAB算法的表示算法的表示B3(C C语言程序设计)语言程序设计
4、)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例例4 41 1 求求1234512345分析:122;236;6424;245120 设置p为被乘数,存放结果;i为乘数,存放每个数据;S1S1:使:使p=1;p=1;S2S2:使:使i=1;i=1;S3S3:p pi ip;p;S4S4:i+1=ii+1=iS5S5:若:若i=5i=5,执行,执行S3S3;否则算法结束。否则算法结束。语言描述:语言描述:首先设置两个变量并对其初始化,其中首先设置两个变量并对其初始化,其中p p为为结果变量
5、,赋初值为结果变量,赋初值为1 1;i i为数据变量,赋初值为为数据变量,赋初值为1 1;计算计算p pi i,将结果放入,将结果放入p p中中,p,p代表前代表前i i项连乘积项连乘积;然后使然后使i i在原来基础上加在原来基础上加1 1;对;对i i进行判断,如果进行判断,如果i=5i=5,则继续进行累乘运算,即返回则继续进行累乘运算,即返回S3S3,否则,停止。,否则,停止。即算法结束。即算法结束。算法的自然语言描述算法的自然语言描述4(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣
6、服或裹上湿毛毯、湿被褥勇敢地冲出去例例4 42 2 有有5050个学生,要求将他们之中成绩在个学生,要求将他们之中成绩在8080分以上者打印出来。分以上者打印出来。分析:逐一将每个同学的成绩与分析:逐一将每个同学的成绩与8080分进行比较,符合条件即打印。设:分进行比较,符合条件即打印。设:n n表示学生学号,表示学生学号,n1n1表表示第一个学生学号;示第一个学生学号;nini表示第表示第i i个学生学号;个学生学号;g g表示学生成绩,表示学生成绩,g1g1表示第一个学生成绩,表示第一个学生成绩,gigi表示第表示第i i个学生成绩,使用个学生成绩,使用gigi与与8080进行判断。进行判
7、断。S1S1:1=i;1=i;S2S2:若:若gi=80gi=80,则打印,则打印nini和和gigi,否则不打印,否则不打印;S3S3:i+1=i;i+1=i;S4S4:若:若i=50i=50,执行,执行S2S2;否则算法结束。否则算法结束。算法的自然语言描述算法的自然语言描述5(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去流程图:灵活、自由、形象、直观,可表示任何算法流程图:灵活、自由、形象、直观,可表示任何算法 输入/输出处理判断开始/结束连接符数
8、据流算法的流程图描述算法的流程图描述32111236(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例例4 43 3 求求1 12 23 34 45 5开始开始0=p1=nP+n=pn+1=nn=5结束结束YNS1S1:使:使p=0;p=0;S2S2:使:使n=1;n=1;S3S3:使:使p=p+n;pp=p+n;p为前面数据相加和;为前面数据相加和;S4S4:使:使n n的值加的值加1 1;S5S5:如果:如果n n小于等于小于等于5 5,执行,执行S3
9、S3;否则算法结束。否则算法结束。算法的流程图描述算法的流程图描述7(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例例4 44 4 有有5050个学生,要求将他们之中成绩在个学生,要求将他们之中成绩在8080分以上者打印出来。分以上者打印出来。S1S1:1=i;1=i;S2S2:输入:输入nini,gigi;S2S2:若:若gi=80gi=80,则打印,则打印nini和和gigi,否则不打印,否则不打印;S3S3:i+1=i;i+1=i;S4S4:若:若
10、i=50ii输入ni gigi 80打印ni,gii+1=ii50结束YNNY算法的流程图描述算法的流程图描述8(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去N-SN-S图(盒图):完全去掉了带箭头的流程线,算法的所有图(盒图):完全去掉了带箭头的流程线,算法的所有 处理步骤,都写在一个大矩形框里处理步骤,都写在一个大矩形框里AAPAPPTFABx0y=2y=1成立不成立p+n=pN=N+1当ni直到i50时算法的算法的N-S图描述图描述B9(C C语言
11、程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法 (方便、易懂、便于向计算机语言过渡)(方便、易懂、便于向计算机语言过渡)基本结构:基本结构:begin 初始化;初始化;执行语句执行语句1;执行语句执行语句n;end 可以写文字,也可以写简易代码可以写文字,也可以写简易代码算法的伪代码描述算法的伪代码描述10(C C语言程序设计)语言程序设计)第第
12、4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去4.2 C语言的语句C语句指令语句非指令语句流程控制语句表达式语句数据定义语句(int a;)编译预处理宏定义(#define)文件包含(#include)条件编译(#ifdef#else#endif)赋值语句(i=1;)函数调用语句(putchar(c);)逗号语句(+a,+b;)空语句(;)判断语句(if,switch)循环语句(for,while,dowhile)转移控制语句(break;continue,return;goto)复合语句(由一
13、对花括号括起来的一组语句,如:int a;a=1;printf(“%d”,a);)11(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去形式二:u格式:if(expression)语句组语句组1;else 语句组语句组2;u执行过程:if语句的三种形式形式一:u格式:if(expression)语句组语句组1;u执行过程:exprstatement非0=0例:if(xy)printf(“%d”,x);exprstatement1statement2非0=0例
14、:if(xy)max=x;else max=y;(1)if语句中的“表达式”必须用“(”和“)”括起来。(2)else子句是if语句的一部分,必须与if配对使用,不能单独使用。(3)当if和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。例:if(xy)printf(“最大值为:”);printf(“%dn”,x);else printf(“最大值为:”);printf(“%dn”,y);4.3 if 语句12(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的
15、衣服或裹上湿毛毯、湿被褥勇敢地冲出去#include main()int x,y;printf(Enter an integer:);scanf(%d,&x);y=x;if(yabsolute value:%dn,x,y);例4-7 求一个数的绝对值运行:Enter an integer:-12 integer:-12-absolute value:12运行:Enter an integer:12 integer:12-absolute value:1213(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立
16、断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去#include main()int a,b;printf(Enter integer a:);scanf(%d,&a);printf(Enter integer b:);scanf(%d,&b);if(a=b)printf(a=bn);else printf(a!=bn);例 2 输入两个整数并判断两数相等否运行:Enter integer a:12 Enter integer b:12 a=b 运行:Enter integer a:12 Enter integer b:9 a!=b 14(C C语言程序设计)语言程序设计)第第 4 章章 选
17、择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0(1 1)ifif语句允许嵌套:语句允许嵌套:所谓所谓ifif语句的嵌套是指,在语句的嵌套是指,在“语句组语句组1”1”或或“语句组语句组2”2”中又包含有中又包含有ifif语句的情况。语句的情况。(2 2)ifif语句嵌套时,语句嵌套时,elseelse子句与子句与ifif的的 匹配原则匹配原则:与在它上面、距它最近、且尚未匹配的:与在
18、它上面、距它最近、且尚未匹配的ifif配对。书写时注意形成层次;配对。书写时注意形成层次;(3 3)为明确匹配关系,避免匹配错误,)为明确匹配关系,避免匹配错误,强烈建议强烈建议:将内嵌的:将内嵌的ifif语句,一律用花括号括起来。语句,一律用花括号括起来。形式三:u格式:if(expr1)语句组语句组1;else if(expr2)语句组语句组2;else if(expr3)语句组语句组3;else 语句组语句组n;u 执行过程:15(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹
19、上湿毛毯、湿被褥勇敢地冲出去else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.例:if(salary1000)index=0.4;else if(salary800)index=0.3;else if(salary600)index=0.2;else if(salary400)index=0.1;else index=0;if else 配对原则例:if(salary1000)index=0.4;else if(salary800)index=0.3;else if(salary600)index=0.2;else if(salary400)i
20、ndex=0.1;else index=0;16(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现if else 正确配对方法:加 输入a=1,b=1,c=3结果输出为:a!=b17(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计
21、选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);说明:u if后面的表达式类型任意u if.else相匹配例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);Compile Error!例 考虑下面程序的输出结果:#include
22、main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);18(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去if语句嵌套:l一般形式:if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌if内嵌ifif(expr1)if(expr2)
23、statement1 else statement2内嵌ifif(expr1)if(expr2)statement1else statement3 内嵌ifif(expr1)statement1else if(expr3)statement3 else statement4else中内嵌if19(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去#include main()char c;printf(Enter a character:);c=getchar
24、();if(c=0&c=A&c=a&c=z)printf(The character is a lower lettern);else printf(The character is other charactern);例4-8 判断输入字符种类运行:Enter a character:The character is a control character运行:Enter a character:8 The character is a digit运行:Enter a character:D The character is a capital letter运行:Enter a charac
25、ter:h The character is a lower letter运行:Enter a character:F1 The character is other character20(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例4-9 考虑下面程序输出结果:main()int x=100,a=10,b=20;int v1=5,v2=0;if(a b)if(b!=15)if(!v1)x=1;else if(v2)x=10;x=-1;printf(
26、“%d”,x);结果:-121(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去课堂练习1 1阅读下列程序,回答问题:#include void main()int a,b,m,n;scanf(“%d,%d”,&a,&b);m=1;n=1;if(a0)m=m+n;if(ab)n=2*m;else if(a=b)n=5;else n=m+1;printf(“m=%d,n=%dn”,m,n);问:(1)当输入为:1,2时,程序的运行结果是什么?(2)当输入为:1
27、,0时,程序的运行结果是什么?答:(1)当输入为:1,2时,m=1 n=2(2)当输入为:1,0时,m=2 n=322(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去switch(表达式)case E1:语句组 1;case E2:语句组 2;.case En:语句组 n;default:语句组;v执行过程:switch表达式语句组1 语句组2语句组n 语句组.E 1E 2Endefaultcase switch(表达式)case E1:语句组 1;bre
28、ak;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组;break;4.4 switch语句23(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去v说明:lE1,E2,En是常量表达式,且值必须互不相同lcase后可包含多个可执行语句,且不必加 l多个case可共用一组执行语句l语句标号作用,必须用break跳出l如果无break,找到入口后,将继续执行下去,不再进行判断;如:case A:case B
29、:case C:printf(“score60n”);break;.如:case A:printf(“score90n”);printf(“good!n”);case B:case C:printf(“score60n”);.24(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例4-11 switch(score)case 5:printf(“Very good!”);case 4:printf(“Good!”);case 3:printf(“Pass!”
30、);case 2:printf(“Fail!”);default :printf(“data error!”);运行结果:score为5时,输出:Very good!Good!Pass!Fail!data error!例4-11 switch(score)case 5:printf(“Very good!”);break;case 4:printf(“Good!”);break;case 3:printf(“Pass!”);break;case 2:printf(“Fail!”);break;default :printf(“data error!”);运行结果:score为5时,输出:Ver
31、y good!25(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去例4-12 void main()int x=1,y=0,a=0,b=0;switch(x)case 1:switch(y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;case 3:a+;b+;printf(“na=%d,b=%d”,a,b);运行结果:a=2,b=126(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设
32、计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去案例案例4.4.1 求一元二次方程ax2+bx+c=0的解(a0)。/*功能:求一元二次方程的解。*/#include math.hmain()float a,b,c,disc,x1,x2,p,q;scanf(“%f,%f,%f”,&a,&b,&c);disc=b*b-4*a*c;if (fabs(disc)1e-6)x1=(-b+sqrt(disc)/(2*a);/*求出两个不相等的实根*/x2=(-b-sqrt(disc)/(2*a);printf(x1=%7.2f,
33、x2=%7.2fn,x1,x2);浮点数=1e-6,就认为近似=04.4 选择型程序设计举例27(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去 else p=-b/(2*a);/*求出两个共轭复根*/q=sqrt(fabs(disc)/(2*a);printf(“x1=%7.2f+%7.2f i n“,p,q);/*输出两个共轭复根*/printf(”x2=%7.2f-%7.2f i n“,p,q);虚数输出:虚数输出:p+q i p-q i,其中这个,
34、其中这个i是个虚数代表符号,要是个虚数代表符号,要原样输出,例如:原样输出,例如:2+3i,2-3i 说明说明:由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数(例如10-6)。28(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去案例案例4.4.2 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score
35、80,等级为C;60score70,等级为D;score60,等级为E。main()int score,grade;printf(“Input a score(0100):”);scanf(“%d”,&score);grade=score/10;/*将成绩整除10,转化成switch语句中的case标号*/switch(grade)case 10:case 9:printf(“grade=An”);break;目的:考察数值的十位数是多少?29(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的
36、衣服或裹上湿毛毯、湿被褥勇敢地冲出去 case 8:printf(grade=Bn);break;case 7:printf(grade=Cn);break;case 6:printf(grade=Dn);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(“grade=En”);break;default:printf(“The score is out of range!n”);程序运行情况如下:Input a score(0100):85grade=B30(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序
37、设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去课堂练习根据给出的年份和月份判断天数,并输出。例如:2003年9月多少天?31(C C语言程序设计)语言程序设计)第第 4 章章 选择型程序设计选择型程序设计火灾袭来时要迅速疏散逃生,不可蜂拥而出或留恋财物,要当机立断,披上浸湿的衣服或裹上湿毛毯、湿被褥勇敢地冲出去#include void main()int y,m,d;printf(please input a year and a month:);scanf(“%d,%d”,&y,&m);if(m=1|m=3|m=5|m=7|m=8|m=10|m=12)d=31;else if(m=4|m=6|m=9|m=11)d=30;else if(m=2)if(y%4=0&y%100!=0|y%400=0)d=29;else d=28;else d=-1;if(d=-1)printf(error the month);else printf(%d year%d month%d day,y,m,d);32
限制150内