第3章 程序设计2.ppt_第1页
第3章 程序设计2.ppt_第2页
第3章 程序设计2.ppt_第3页
第3章 程序设计2.ppt_第4页
第3章 程序设计2.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3.4 选择结构程序设计,一、 if语句 二、 switch语句 三、 结构嵌套程序举例,教学目的和基本要求:,要求学生掌握选择结构程序设计,嵌套程序设计,学会运用if语句及switch语句。,教学重点:,嵌套程序、 if语句、 switch语句。,很多问题是顺序结构解决不了的 看这样一个例子: 计算分段函数,x在大于等于0和小于0两种不同的情况时,函数将用不同的表达式来求y的值,这时就需要在计算y的值之前,先对x的值进行判断,C语言中用选择语句来实现这一判断。算法N-S图如右上图所示。,C语言中的选择语句有两种:,双分支选择语句 if,多分支选择语句 switch,一 if语句,真,假,语句

2、,表达式,1. if语句的最简单形式:,说明:1. 条件表达式的值为1或0,必须用( )括住 2. 若有多条语句(复合语句)时,用 括住。 3. (条件表达式)后不要加;,main() float x , y; scanf(“%f ”, ,例:计算分段函数,main() int x , y; scanf(“%d,%d ”, ,例:输入两个数X,Y,如果x大于y,则交换两数。,2. if语句的双分支形式:,if (表达式) 语句1 else 语句2,首先先判断表达式的值,若为非0则执行语句1,若为0则执行语句2,语句2,执行过程:,if语句的双分支形式,在语法上视为一条语句。,main() fl

3、oat x , y; scanf(“%f ”, ,例:计算分段函数,例: 输入两个数, 比较其大小, 将较大的数输出。,算法分析: (1) 输入两个数据a,b ; (2) 如果ab 则输出a ;否则,输出b。,#include main( ) float a, b; scanf(“%f, %f”, ,练习:编程实现,从键盘输入一个字符,如果是字母,则输出对应的ASCII码,否则,输出“%”。,main() char a; scanf(%c, ,%,if语句的语句1和语句2又称为if的执行语句。if的执行语句在语法上是一条语句,可以是任何类型的语句,简单语句、复合语句、空语句、流程控制语句都可以

4、作为if的执行语句。,下面我们通过一个例子分别介绍用不同的语句作为if的执行语句的情形:,例:计算分段函数:,方法一:用简单语句,#include main( ) float x,y; scanf(“%f”, ,方法二:用if语句做语句2,#include main( ) float x,y; scanf(“%f”, ,这种用if语句作为上一层if语句的语句2的结构, 称为if语句的多分支选择结构。,多分支选择语句一般形式:,if (表达式) 语句1 else if (表达式)语句2 else ,先判断表达式1的值,非0就执行下面的语句,为0就执行下一个判断,一直这样做下去,直到得出最后结果,

5、流程图如左:,方法三:语句1与语句2都为if语句,#include main( ) float x,y; scanf(“%f”, ,这种用if语句作为上一层if语句的语句1和语句2 的结构,称为if语句的嵌套。,if 语句的二层嵌套结构如下:,if ( 表达式1) if ( 表达式1_2) 语句1_1 else 语句1_2 else if ( 表达式2_1) 语句2_1 else 语句2_2,如:if(a=b,if后面的表达式类型任意,语句可以是复合语句 if(x) if(x!=0) if(!x) if(x=0),例 考虑下面程序的输出结果: #include main() int x,y;

6、scanf(“%d,%d”, ,Compile Error!,说明:,: 一般形式:,if语句嵌套,缺省 时,else总是和它上面离它最近的未配对的if配对,if else 配对原则:,实现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语句编程举例:,例1.写一个程序完成下列功能: 输入一个分数score 当 score60 输出 E

7、当60=score 70 输出 D 当70=score 80 输出 C 当80=score 90 输出 B 当90=score 输出 A,#include main( ) float score; scanf(“%f”, ,程序如下:,例2 : 编程实现:根据两个数sex和tall分类, 如果sex为F,当tall大于等于150时,输出 A,否则输出 B ;若sex不为F, 当tall大于等于170时,输出A,否则输出B。,分析: 根据sex分支 在sex为F的分支中判断tall是否=150 在sex不为F的分支中判断tall是否=170,#include main() int tall; c

8、har sex; printf( “input sex and tall :” ); scanf( “%c %d”, ,程序如下:,二 Switch语句,if语句是根据表达式的值是否为0来判断执行哪一分支的,某些情况下,要根据表达式的不同值来判断执行哪一分支,如表达式的值为1,2,3时,分别执行不同的操作。虽然也可以用多条if语句来完成这一工作,但c语言中提供了一条switch语句,可以更方便的完成。,一般形式:,switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default

9、: 语句组 ; break; ,执行过程:,switch语句(开关分支语句),: E1,E2,En是常量表达式,且值必须互不相同 语句标号作用,必须用break跳出 case后可包含多个可执行语句,且不必加 多个case可共用一组执行语句,如: case A: case B: case C: printf(“score60n”); break; .,说明:,例:看下面的程序在几种不同输入情况下的输出:,#include main( ) char i; scanf(“%c”, ,1. 输入:a,输出:b,2. 输入:b,输出:c101,3. 输入:c,输出:101,例: 编程:根据输入的学生的成

10、绩判断等级。当成绩score 90时为 A等; 成绩70score 90 为B等; 成绩60score 70 为C等; 成绩score 60 为D等 (score 为整数)。,分析: 设score为整型数,利用两个整数相除,结果自动取整的特性,score和 score /10 有如下对应关系: score score/10 90以上 10, 9 7089 7 , 8 6069 6 60以下 5,4,3,2,1,0 因此,可以用score /10的值来确定分支。,#include main( ) int score; scanf(%d , ,程序:,思考题,给一个不多于5位的整数,要求:1.求出

11、它是几位数;2.分别打印出每一位数字;3.按逆序打印出各位数字,例如原数为321,应输出123,三 结构嵌套程序举例,例 求方程ax2+bx+c = 0 的实数解。,分析:根据3个系数的不同情况,方程的根有如下几种情况。 (1) a = 0, 不是二次方程; (2) b2-4ac = 0, 有两个相等的实根; (3) b2-4ac 0, 有两个不等的实根,求x1和x2; (4) b2-4ac 0, 没有实数解。,例 输入年号,判断它是否为闰年。,分析:如果此年号能被400整除,则它是闰年;如果能被4整除,而不能被100整除,则也是闰年,否则不是闰年。程序流程如右图所示。,三 结构嵌套程序举例,例 输入一个由两个数据和一个算术运算符组成的表达式,根据运算符完成相应的运算,并将结果输出。,分析:输入形如 a + b 的表达式,a 和 b为整型数。 如果运算符是“+”、“”、“*”中的任意一个,则进行相应的运算。 如果运算符为“”或“/” ,则应先判断b是否为0,并做相应处理。 如果运算符不合法,则报错

温馨提示

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

评论

0/150

提交评论