c语言4分支结构课件

上传人:tian****1990 文档编号:75206026 上传时间:2019-01-30 格式:PPT 页数:32 大小:403KB
返回 下载 相关 举报
c语言4分支结构课件_第1页
第1页 / 共32页
c语言4分支结构课件_第2页
第2页 / 共32页
c语言4分支结构课件_第3页
第3页 / 共32页
c语言4分支结构课件_第4页
第4页 / 共32页
c语言4分支结构课件_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《c语言4分支结构课件》由会员分享,可在线阅读,更多相关《c语言4分支结构课件(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,否则,停止。 即算法结束。,算法的自然语言

3、描述,5,例42 有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;

4、S3:使p=p+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; else max=y;,(1)if语句中的“表达式”必须用“(”和“)”括起来。 (2)else子句是if语句的一部分,必

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

7、行:Enter an integer:12 integer:12-absolute value :12,14,#include main() int a,b; printf(“Enter integer a:“); scanf(“%d“, ,例 2 输入两个整数并判断两数相等否,运行:Enter integer a:12 Enter integer b:12 a=b,运行:Enter integer a:12 Enter integer b:9 a!=b,15,(1)if语句允许嵌套: 所谓if语句的嵌套是指,在“语句组1”或 “语句组2”中又包含有if语句的情况。 (2)if语句嵌套时,el

8、se子句与if的 匹配原则:与在它上面、距它最近、且尚未匹配的if配对。书写时注意形成层次; (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

9、 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;,17,例: 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

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

11、 c = getchar(); if(c = 0 ,例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 character: h The character is a lower letter,运行: Enter a character:F1 The characte

12、r is other character,21,例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(“%d”,x); ,结果:-1,22,课堂练习,1阅读下列程序,回答问题: #include void main() int a,b,m,n; scanf(“%d, %d”, ,问: (1)当输入为:1,2时, 程序的运行结果是什么? (2)当输入为:1,0时, 程序

13、的运行结果是什么?,答: (1)当输入为:1,2时, m=1 n=2 (2)当输入为:1,0时, m=2 n=3,23,switch( 表达式) case E1: 语句组 1; 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

14、后可包含多个可执行语句,且不必加 多个case可共用一组执行语句 语句标号作用,必须用break跳出 如果无break,找到入口后,将继续执行下去,不再进行判断;,如: case A: case B: case C: printf(“score60n”); break; ,如: case A: printf(“score90n”); printf(“good!n”); case B: case C: printf(“score60n”); ,25,例4-11 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”);

15、 case 3: printf(“Pass!”); 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时,输出: Very good!,26,例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:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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