C语言4分支结构课件.ppt

上传人:re****.1 文档编号:571151116 上传时间:2024-08-09 格式:PPT 页数:32 大小:403KB
返回 下载 相关 举报
C语言4分支结构课件.ppt_第1页
第1页 / 共32页
C语言4分支结构课件.ppt_第2页
第2页 / 共32页
C语言4分支结构课件.ppt_第3页
第3页 / 共32页
C语言4分支结构课件.ppt_第4页
第4页 / 共32页
C语言4分支结构课件.ppt_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《C语言4分支结构课件.ppt》由会员分享,可在线阅读,更多相关《C语言4分支结构课件.ppt(32页珍藏版)》请在金锄头文库上搜索。

1、( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计第 4 章 选择型程序设计1( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计4.1 程序的灵魂算法算法(algorithm):计算机求解某一问题而采用的具体方法、步骤。两大类计算机算法:数值运算算法、 非数值运算算法 (求数值解、成熟)(事务管理、广泛)算法特征: 1有穷性 2确定性 3输入 4输出 5有效性著名计算机科学家沃思著名计算机科学家沃思(NikiklausNikiklaus Wirth Wirth) 公式公式:数据结构数据结构 算法算法 程序程序描述数据的类型、组

2、织结构描述对数据的操作步骤算法的概念算法的概念2( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计(1 1)带序号的自然语言描述)带序号的自然语言描述 (易懂但不直观,不严格)(易懂但不直观,不严格)(2)流程图:灵活、自由、形象、直观,可表示任何算法流程图:灵活、自由、形象、直观,可表示任何算法 输入/输出处理判断开始/结束连接符数据流(3 3)N-SN-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤 都写在一个大矩形框里(描述简单,符合结构化的思想)都写在一个大矩形框里(描述简单,符合结构

3、化的思想)(4 4)伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法)伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法 (方便、易懂、便于向计算机语言过渡)(方便、易懂、便于向计算机语言过渡)AAPAPPTFAB算法的表示算法的表示B3( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例例4 41 1 求求1 12 23 34 45 5分析:122;236;6424;245120 设置p为被乘数,存放结果; i为乘数,存放每个数据;S1S1:使:使p=1;p=1;S2S2:使:使i=1;i=1;S3S3:p pi ip; p; S4S4

4、:i+1=ii+1=iS5S5:若:若i=5i=5,执行,执行S3S3; 否则算法结束。否则算法结束。语言描述:语言描述: 首先设置两个变量并对其初始化,其中首先设置两个变量并对其初始化,其中p p为为结果变量,赋初值为结果变量,赋初值为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,否则,停止。,否则,停止。即

5、算法结束。即算法结束。算法的自然语言描述算法的自然语言描述4( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例例4 42 2 有有5050个学生,要求将他们之中成绩在个学生,要求将他们之中成绩在8080分以上者打印出来。分以上者打印出来。分析:逐一将每个同学的成绩与分析:逐一将每个同学的成绩与8080分进行比较,符合条件即打印。设:分进行比较,符合条件即打印。设:n n表示学生学号,表示学生学号,n1n1表表示第一个学生学号;示第一个学生学号;nini表示第表示第i i个学生学号;个学生学号;g g表示学生成绩,表示学生成绩,g1g1表示第一个学生成绩,表示

6、第一个学生成绩,gigi表示第表示第i i个学生成绩,使用个学生成绩,使用gigi与与8080进行判断。进行判断。 S1S1:1=i;1=i;S2S2:若:若gigi=80=80,则打印,则打印nini和和gigi,否则不打印,否则不打印; ;S3S3:i+1=i; i+1=i; S4S4:若:若i=50i=50,执行,执行S2S2; 否则算法结束。否则算法结束。算法的自然语言描述算法的自然语言描述5( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计流程图:灵活、自由、形象、直观,可表示任何算法流程图:灵活、自由、形象、直观,可表示任何算法 输入/输出处理判断

7、开始/结束连接符数据流算法的流程图描述算法的流程图描述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=p+np+n; p; p为前面数据相加和;为前面数据相加和;S4S4:使:使n n的值加的值加1 1;S5S5:如果:如果n n小于等于小于等于5 5,执行,执行S3S3; 否则算法结束。否则算法结束。算法的流程图描述算法的流程图描述7( C C语

8、言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例例4 44 4 有有5050个学生,要求将他们之中成绩在个学生,要求将他们之中成绩在8080分以上者打印出来。分以上者打印出来。S1S1:1=i;1=i;S2S2:输入:输入nini,gigi;S2S2:若:若gigi=80=80,则打印,则打印nini和和gigi,否则不打印,否则不打印; ;S3S3:i+1=i; i+1=i; S4S4:若:若i=50ii输入ni gigi 80打印ni,gii+1=ii50结束YNNY算法的流程图描述算法的流程图描述8( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程

9、序设计选择型程序设计N-SN-S图(盒图):完全去掉了带箭头的流程线,算法的所有图(盒图):完全去掉了带箭头的流程线,算法的所有 处理步骤,都写在一个大矩形框里处理步骤,都写在一个大矩形框里AAPAPPTFABx0y=2y=1成立不成立p+n=pN=N+1当ni直到i50时算法的算法的N-S图描述图描述B9( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法 (方便、易懂、便于向计算机语言过渡)(方便、易懂、便于向计算机语言过渡)基本结构:基本

10、结构: begin 初始化;初始化; 执行语句执行语句1; 执行语句执行语句n; end 可以写文字,也可以写简易代码可以写文字,也可以写简易代码算法的伪代码描述算法的伪代码描述10( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计4.2 C语言的语句C语句指令语句非指令语句流程控制语句表达式语句数据定义语句(int a;)编译预处理宏定义(#define)文件包含(#include)条件编译(#ifdef #else #endif)赋值语句( i = 1; )函数调用语句( putchar(c); )逗号语句( +a, +b; )空语句( ; )判断语句(

11、if, switch )循环语句( for, while, dowhile )转移控制语句(break; continue, return; goto)复合语句(由一对花括号括起来的一组语句,如: 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 (x

12、y) printf(“%d”,x);exprstatement1statement2非0=0例: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语言程序设计)语言程序设计) 第

13、第 4 章章 选择型程序设计选择型程序设计#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 章章 选择型程序设计选择型程序设计#include main() i

14、nt 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 章章 选择型程序设计选择型程序设计expr1statemnt1非0=0e

15、xpr2expr3statemntnstatemnt3statemnt2非0非0=0=0(1 1)ifif语句允许嵌套:语句允许嵌套: 所谓所谓ifif语句的嵌套是指,在语句的嵌套是指,在“语句组语句组1”1”或或 “ “语句组语句组2”2”中又包含有中又包含有ifif语句的情况。语句的情况。(2 2)ifif语句嵌套时,语句嵌套时,elseelse子句与子句与ifif的的 匹配原则匹配原则:与在它上面、距它最近、且尚未匹配的:与在它上面、距它最近、且尚未匹配的ifif配对。书写时注意形成层次;配对。书写时注意形成层次;(3 3)为明确匹配关系,避免匹配错误,)为明确匹配关系,避免匹配错误,

16、强烈建议强烈建议:将内嵌的:将内嵌的ifif语句,一律用花括号括起来。语句,一律用花括号括起来。形式三:u格式: if (expr1) 语句组语句组1; else if( expr2) 语句组语句组2; else if( expr3) 语句组语句组3; else 语句组语句组n; u 执行过程:15( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.例:if (salary1000) index=0.4; else if (salary800) index=0.3

17、; 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) index=0.1; else index=0; 16( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例: if (a=b) if(b=c) printf(“a=

18、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 章章 选择型程序设计选择型程序设计如:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a); 说明:u if后面的表达式类型任意u if . else相匹配例 考虑下面程序的输出结果: #incl

19、ude 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 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) s

20、tatement1 else statement2else if(expr3) statement3 else statement4内嵌if内嵌ifif (expr1) if (expr2) statement1 else statement2内嵌ifif (expr1) if (expr2) statement1else statement3 内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4else中内嵌if19( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计#includ

21、e main() char c; printf(Enter a character:); c = getchar(); 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运行

22、: Enter a character: D The character is a capital letter运行: Enter a character: 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 !=

23、 15) if(!v1) x = 1; else if(v2) x = 10; x = -1; printf(“%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)当输入为:

24、1,2时,程序的运行结果是什么?(2)当输入为:1,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; break; case E2

25、: 语句组 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: case C: printf(“score60n”); break; .如: case A:

26、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!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very

27、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时,输出: Very good! 25( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例4-12

28、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 章章 选择型程序设计选择型程序设计案例案例4.4.1 求一元二次方程ax2+bx+c=0的解(a0)。/*功能:求一元二次方程的解。*/#include math.hmain() float a,b

29、,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,x2=%7.2fn, x1, x2); 浮点数=1e-6,就认为近似=04.4 选择型程序设计举例27( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 else p=-b/(2*a);/*求出两个共轭复根*/ q=sqrt(fabs

30、(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 ,其中这个,其中这个i是个虚数代表符号,要是个虚数代表符号,要原样输出,例如:原样输出,例如:2+3i, 2-3i 说明说明:由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数(例如10-6)。28( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择

31、型程序设计案例案例4.4.2 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90,等级为B;70score80,等级为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”); brea

32、k;目的:考察数值的十位数是多少?29( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 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

33、score(0100): 85grade=B30( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计课堂练习根据给出的年份和月份判断天数,并输出。例如: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

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

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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