程序的三种基本结构.ppt

上传人:za****8 文档编号:16597558 上传时间:2020-10-18 格式:PPT 页数:24 大小:394KB
收藏 版权申诉 举报 下载
程序的三种基本结构.ppt_第1页
第1页 / 共24页
程序的三种基本结构.ppt_第2页
第2页 / 共24页
程序的三种基本结构.ppt_第3页
第3页 / 共24页
资源描述:

《程序的三种基本结构.ppt》由会员分享,可在线阅读,更多相关《程序的三种基本结构.ppt(24页珍藏版)》请在装配图网上搜索。

1、 结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句( goto) 结构化程序:由三种基本结构反复嵌套构成的程序叫 优点:结构清晰,易读,提高程序设计质量和效率 三种基本结构 顺序结构 A B A B 流程图 N-S图 程序的三种基本结构 P A B 真 假 P B A 真 假 k A1 A2 Ai An k=k2 k=k1 k=kn k=ki . . 二分支选择结构 多分支选择结构 选择结构 当型循环结构 直到型循环结构 P A 假 真 当 P为真 A A P 真 假 A 直到 P为真 注: A,B,A1.An 可以是一个简单语句,也可以是一个基本结构 循环

2、结构 返回 第 5章 选择语句 5.1 if 条件语句 5.2 switch多分支选择语句 5.3 程序举例 5.1 if条件语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定 执行给出的两种操作之一。 5.1.1 if语句的三种形式 1 单分支选择语句 的形式 : if(表达式) 语句 这种 if语句的执行过程见图 : 0(N) 表达式 语句 1(Y) main( ) float x , y; scanf(“%f ”, if (x=0) y = 2 * x ; if (x 0) y = 3 - x ; printf(“y= %6.2f”, y ); 任给 a,b,c三

3、个数,按从小到大的顺序输出。 分析: ( 1)对于 a,b任意两个数: 若 ab,则输出 a , b ; 否则输出 b , a ; ( 2 ) 对于三个数,有 6种可能: abc acb bac bca cab cbb,则交换 a和 b,交换后 ac,则交换 a和 c,交换后 ac,则交换 b和 c,交换后 bb) temp=a;a=b;b=temp; if(ac) temp=a;a=c;c=temp; if(bc) temp=b;b=c;c=temp; printf(%d,%d,%d,a,b,c); 运行情况如下: 3, 7, 1 1, 3, 7 2双分支选择语句 的形式: if(表达式)

4、语句 1 else 语句 2 见图 : 表达式 语句 1 语句 2 真 假 main() float x , y; scanf(“%f ”, if ( x b 则输出 a ;否则,输出 b。 #include main( ) float a, b; scanf(“%f, %f”, if (ab) printf (“%f”, a ); else printf (“%f”, b ); 3 多分支选择语句 的形式: if ( 表达式 1) 语句 1 else if ( 表达式 2) 语句 2 else if( 表达式 3) 语句 3 else if ( 表达式 m) 语句 m else 语句 n 流

5、程图 表达式 1 F T 表达式 3 F T 表达式 2 F T 表达式 4 F T 语句 4 语句 5 语句 3 语句 2 语句 1 写一个程序完成下列功能 : 1. 输入一个分数 score 2 .score60 输出 E 3 .60=score 70 输出 D 4. 70=score 80 输出 C 5 .80=score 90 输出 B 6 .90=score 输出 A 多分支问题 #include main( ) int score; scanf(“%d”, if ( score60) printf(“E” ); else if ( score 70) printf(“D” ); e

6、lse if (score 80) printf(“C” ); else if (score 90) printf(“B” ); else printf(“A” ); 程序 如: if(a=b if(3) printf(“OK”); if(a) printf(“%d”,a); if后面的表达式类型任意 语句可以是复合语句 if(x) if(x!=0) if(!x) if(x=0) 例 考虑下面程序的输出结果 : #include main() int x,y; scanf(“%d,%d”, if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);

7、Compile Error! 说明: 5.1.2 一般形式: if (expr1) if (expr2) statement1 else statement2 else if(expr3) statement3 else statement4 内嵌 if 内嵌 if if (expr1) if (expr2) statement1 else statement2 内嵌 if if (expr1) if (expr2) statement1 else statement3 内嵌 if if (expr1) statement1 else if(expr3) statement3 else sta

8、tement4 内嵌 if if语句嵌套 /*ch4_4.c*/ #include main() int x,y; printf(Enter integer x,y:); scanf(%d,%d, if(x!=y) if(xy) printf(XYn); else printf(XYn); else printf(X=Yn); 运行: Enter integer x,y:12,23 XY Enter integer x,y:12,12 X=Y 例 输入两数并判断其大小关系 缺省 时, else总是和它上面离它最近的未配 对的 if配对 if() if() if() else. else. el

9、se. if else 配对原则: 例: 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 正确配对方法:加 实 现if el se 正 确 配 对 方 法 5.2 switch语句 switch语句是 多分支选择语句 。 if语句只有两个分支可供选择, 而实际问题中常常需要用到多分支的选择。例如,学生成绩分类( 90分 以为 A等, 80 89分为 B等, 70 79分为 c 等, );人口统

10、计分类(按年龄分为老、中、青、少、儿童);工资统计分类;银行存 款分类; 等。 当然这些都可以用嵌套的 if语句或 多分支 来处理,但 如果分支较多,则嵌套的 if语句层数多,程序冗长而且可读性降低。 C 语言提供 switch语句直接处理多分支选择,它的一般形式如下: switch (表达式) case 常量表达式 1:语句 1 case 常量表达式 2:语句 2 case 常量表达式 i:语句 n default :语句 n+1 首先计算表达式的值,然后依次与常量表达式 i( i=1,2,n )比较。 若表达式的值与某一个常量表达式, 如 j ( 1 j n)相等,则执行语句 j。 若表达

11、式的值与所有的常量表达式 i( i=1,2,n )均不 相等,则执行 defau1t后面的语句 n+1。 功能 语句中的表达式可以是整型或字符型、枚举型。常量表达 式 i 必须与表达式类型一致(整型与字符型通用)。 i 仅 起语句标号作用,不做求值判断。 语句结构中各个 case后常量表达式的值必须互不相同;否 则执行时将出现矛盾。 各个 case的出现次序不影响执行结果。例如,可以先出现caseD: ,然后是 caseA: default一般出现在所有 case之后,也可以出现在 case之 前或两个 case之间 ,default也可以缺省。 为了在执行完一个 case分支后能跳出 swi

12、tch多分支选择 语句,可在 case分支结束后,插入一个 break语句。若有 break语句,就从此 break语句跳出 break所在的当前结构; 若无 break语句,执行该语句后,流程控制转移到下一个 分支 : 继续执行这一个分支的语句,一直到最后一个语句 执行完。 下一页 注意 switch ( i ) case 1: printf( An); case 3: printf( Cn); case 4: printf( Dn); default: printf( En); 假设 i=3时,则会从 i=3 时做起始语句。 运行结 果见右图。 如果给每条 语句加上 break这样就 只执

13、行一条语句。 C D E 下一页 看下面的例子 运行结果 case 2: printf ( Bn ); 如果多种情况需要共用一个执行语句 ,可 用 case的常量表达式多种情况列出 ,最后 一种情况后 ,才放执行的语句。 case后面的语句可以是一条语句,也可 以是复合语句,还可以是花括弧括起来 的几条语句,还可以是空语句。有多条 语句时会顺序执行完所有语句。 下一页 说明 编程:根据输入的学生的成绩判断等级。 当成绩 score 90时为 A等 ; 成绩 70score 90 为 B等 ; 成绩 60score 70 为 C等 ; 成绩 score 60 为 D等; (score 为整数 )

14、。 分析 : 设 score为整型数,在 score90 的范围内, score 可能取 100, 99,.,90,利用两个整数相除,结果自动 取整的特性 score score/10 90 10, 9 7089 7 , 8 6069 6 60以下 default score和 score /10 有如下对应关系: 下一页 例 如 因此 ,可以用 score /10的值 来确定分支 #include main( ) /*用 switch 语句评级 */ int score; scanf(%d , switch (score /10) case 10: case 9: printf(%d: An, score);break; case 8: case 7: printf(%d: Bn, score);break; case 6: printf(%d: Cn, score);break; default: printf(%d: Dn, score); 程序 返回

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!