收藏 分享(赏)

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

上传人:myw993772 文档编号:5453517 上传时间:2019-03-04 格式: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页
点击查看更多>>
资源描述

1、1,第 4 章 选择型程序设计,2,4.1 程序的灵魂算法,算法(algorithm):计算机求解某一问题而采用的具体方法、步骤。 两大类计算机算法:数值运算算法、 非数值运算算法 (求数值解、成熟)(事务管理、广泛) 算法特征:1有穷性 2确定性 3输入 4输出 5有效性,著名计算机科学家沃思(Nikiklaus Wirth) 公式:数据结构 算法 程序,算法的概念,3,(1)带序号的自然语言描述 (易懂但不直观,不严格),(3)N-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框里(描述简单,符合结构化的思想),(4)伪代码:用介于自然语言和计算机语言之间的文字

2、及符号来描述算法(方便、易懂、便于向计算机语言过渡),A,算法的表示,B,4,例41 求12345 分析:122;236;6424;245120设置p为被乘数,存放结果; i为乘数,存放每个数据;,S1:使p=1; S2:使i=1; S3:pip; S4:i+1=i S5:若i=5,执行S3;否则算法结束。,语言描述:首先设置两个变量并对其初始化,其中p为 结果变量,赋初值为1;i为数据变量,赋初值为1; 计算pi,将结果放入p中,p代表前i项连乘积; 然后使i在原来基础上加1;对i进行判断,如果i=5, 则继续进行累乘运算,即返回S3,否则,停止。 即算法结束。,算法的自然语言描述,5,例4

3、2 有50个学生,要求将他们之中成绩在80分以上者打印出来。 分析:逐一将每个同学的成绩与80分进行比较,符合条件即打印。设:n表示学生学号,n1表示第一个学生学号;ni表示第i个学生学号;g表示学生成绩,g1表示第一个学生成绩,gi表示第i个学生成绩,使用gi与80进行判断。,S1:1=i; S2:若gi=80,则打印ni和gi,否则不打印; S3:i+1=i; S4:若i=50,执行S2;否则算法结束。,算法的自然语言描述,6,算法的流程图描述,7,例43 求12345,开始,0=p,1=n,P+n=p,n+1=n,n=5,结束,Y,N,S1:使p=0; S2:使n=1; S3:使p=p+

4、n; p为前面数据相加和; S4:使n的值加1; S5:如果n小于等于5,执行S3;否则算法结束。,算法的流程图描述,8,例44 有50个学生,要求将他们之中成绩在80分以上者打印出来。,S1:1=i; S2:输入ni,gi; S2:若gi=80,则打印ni和gi,否则不打印; S3:i+1=i; S4:若i=50,执行S2;否则算法结束。,ni, gi为第i个学生 的学号和成绩,算法的流程图描述,9,N-S图(盒图):完全去掉了带箭头的流程线,算法的所有处理步骤,都写在一个大矩形框里,A,算法的N-S图描述,B,10,伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法(方便、易懂、

5、便于向计算机语言过渡),基本结构:begin初始化;执行语句1;执行语句n;end 可以写文字,也可以写简易代码,算法的伪代码描述,11,4.2 C语言的语句,12,形式二: 格式:if (expression) 语句组1;else语句组2; 执行过程:,if语句的三种形式 形式一: 格式:if (expression) 语句组1; 执行过程:,例:if (xy)printf(“%d”,x);,例: if (xy) max=x; elsemax=y;,(1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句是if语句的一部分,必须与if配对使用,不能单独使用。 (3)当if

6、和else下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。,例:if (xy)printf(“最大值为:”);printf(“%dn”,x);elseprintf(“最大值为:”);printf(“%dn”,y);,4.3 if 语句,13,#include main() int x,y;printf(“Enter an integer:“);scanf(“%d“, ,例4-7 求一个数的绝对值,运行:Enter an integer:-12integer:-12-absolute value :12,运行:Enter an integer:12integer:12-

7、absolute value :12,14,#include main() int a,b;printf(“Enter integer a:“);scanf(“%d“, ,例 2 输入两个整数并判断两数相等否,运行:Enter integer a:12Enter integer b:12a=b,运行:Enter integer a:12Enter integer b:9a!=b,15,(1)if语句允许嵌套:所谓if语句的嵌套是指,在“语句组1”或 “语句组2”中又包含有if语句的情况。 (2)if语句嵌套时,else子句与if的匹配原则:与在它上面、距它最近、且尚未匹配的if配对。书写时注意

8、形成层次; (3)为明确匹配关系,避免匹配错误,强烈建议:将内嵌的if语句,一律用花括号括起来。,形式三: 格式:if (expr1) 语句组1;else if( expr2)语句组2;else if( expr3)语句组3; else语句组n; 执行过程:,16,else总是和它上面离它最近的未配对的if配对,例: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 配对原则,例

9、: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;,17,例: if (a=b)if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,修改: if (a=b) if(b=c)printf(“a=b=c”);elseprintf(“a!=b”);,实现if else 正确配对方法:加 ,输入a=1, b=1, c=3 结果输出为:a!=b,18,如:if(

10、a=b,说明:if后面的表达式类型任意if . else相匹配,例 考虑下面程序的输出结果: #include main() int x,y;scanf(“%d,%d”, ,Compile Error!,例 考虑下面程序的输出结果: #include main() int x,y;scanf(“%d,%d”, ,19,if语句嵌套: 一般形式:,20,#include main() char c;printf(“Enter a character:“);c = getchar();if(c = 0 ,例4-8 判断输入字符种类,运行:Enter a character: The charact

11、er is a control character,运行:Enter a character:8 The character is a digit,运行: Enter a character: DThe character is a capital letter,运行: Enter a character: hThe character is a lower letter,运行: Enter a character:F1 The character is other character,21,例4-9 考虑下面程序输出结果:main() int x = 100, a= 10, b = 20;i

12、nt v1 = 5, v2 = 0;if(a b)if(b != 15)if(!v1)x = 1;else if(v2) x = 10;x = -1;printf(“%d”,x);,结果:-1,22,课堂练习,1阅读下列程序,回答问题: #include void main() int a,b,m,n;scanf(“%d, %d”, ,问: (1)当输入为:1,2时, 程序的运行结果是什么? (2)当输入为:1,0时, 程序的运行结果是什么?,答: (1)当输入为:1,2时, m=1 n=2 (2)当输入为:1,0时, m=2 n=3,23,switch( 表达式) case E1:语句组 1

13、;case E2:语句组 2;.case En:语句组 n;default:语句组 ; ,执行过程:,switch( 表达式) case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组 ;break; ,4.4 switch语句,24,说明: E1,E2,En是常量表达式,且值必须互不相同 case后可包含多个可执行语句,且不必加 多个case可共用一组执行语句 语句标号作用,必须用break跳出 如果无break,找到入口后,将继续执行下去,不再进行判断;,如: case A:case B:case C:

14、 printf(“score60n”);break;,如: case A: printf(“score90n”);printf(“good!n”);case B:case C: printf(“score60n”);,25,例4-11switch(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 good! Good! P

15、ass! Fail! data error!,例4-11switch(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!,26,例4-12void main() int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y) case

16、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=1,27,案例4.4.1 求一元二次方程ax2+bx+c=0的解(a0)。 /*功能:求一元二次方程的解。*/ #include “math.h“ main() float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, ,浮点数=1e-6,就认为近似=0,4.4 选择型程序设计举例,28,else p=-b/(2*a); /*求出两个共轭复根*/ q=sqr

17、t(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 ,其中这个i是个虚数代表符号,要原样输出,例如:2+3i, 2-3i说明:由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断disc是否为0的方法是:判断disc的绝对值是否小于一个很小的数(例如10-6)。,29,案例4.4.2 从键盘上输入一个百分制成绩score,按下列原则输出其等级:score90,等级为A;80score90

18、,等级为B;70score80,等级为C;60score70,等级为D;score60,等级为E。 main() int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, ,目的:考察数值的十位数是多少?,30,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): 85 grade=B,31,课堂练习,根据给出的年份和月份判断天数,并输出。例如:2003年9月多少天?,32,#include void main() int y, m, d;printf(“please input a year and a month:“);scanf(“%d,%d ”, ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 职业教育

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报