《第4章选择程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章选择程序设计.ppt(40页珍藏版)》请在三一文库上搜索。
1、 C语言程序设计,在一个函数内部,由左、右花括号括起来的语句成为复合语句。一般形式是: 复合语句实际上是多条语句的集合。例如: t=a;a=b;b=t;,4.1 语句和复合语句,第4章 选择程序设计,注意: 一个复合语句在语法上等同于一个语句. 复合语句作为一个语句又可以出现在其他复合语句的内部(复合语句的嵌套)。 复合语句是以右花括号为结束标志,因此,在复合语句右括号的后面不必加分号,但在复合语句内的最后一个非复合语句是要以分号作为结束的。 t=a;a=b;b=t;,第4章 选择程序设计,4.1 语句和复合语句,(3)在复合语句中,一个复合语句内所进行的说明只适合于本层中该说明语句以后的部分
2、,在该复合语句外不起作用。(见例程),第4章 选择程序设计,4.1 语句和复合语句,第4章 选择程序设计,1、标准if-else结构 ifelse构造了一种二路分支选择结构,是一种最基本的选择结构。 【格式】 if (表达式) 语句1; else 语句2; 或: if (表达式) 语句1; else 语句2; 例如:if (xy) printf(“max=d“,x); else printf(“max=d“,y);,4.3 if语句的三种形式,第4章 选择程序设计,例:键盘输入两个整数分别赋给x和y,编程输出其 中的大数。 #include void main() int x,y; print
3、f(“Enter x ,4.3 if语句的三种形式,第4章 选择程序设计,例: 键盘输入一个实数,要求输出它的绝对值。 #include void main() double x; scanf(“%lf“, ,4.3 if语句的三种形式,第4章 选择程序设计,2、缺省else子句的if结构(又称不平衡if结构 ) 【格式】 if (表达式) 语句; 例如: if (xy) printf(“d“,x);,4.3 if语句的三种形式,第4章 选择程序设计,例4.3 输入两个数,分别放入x和y中,若两数不相等,则输出其中的大数;若两数相等,则输出字符串“x=y”和x的值。 #include void
4、 main() int x,y; printf(“Enter x ,4.3 if语句的三种形式,第4章 选择程序设计,3、ifelse if阶梯结构 【格式】 if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else if (表达式n-1) 语句n-1; else 语句n;,4.3 if语句的三种形式,if(score=90) grade=A; else if (score=80) grade=B; else if (score=70) grade=C; else if (score=60) grade=D; else grade=
5、E;,第4章 选择程序设计,4、 三种形式if语句的说明 (1) 三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。例如: if(a=b & x=y) printf(“a=b,x=y”); 以下if语句是合法的: if (3) printf (“OK“); 表达式的类型不限于逻辑表达式,可以是任意的数值类型(包括整型、实型、字符型、指针型数据)。下面的if语句也是合法的: if (a) printf(“d“,a);,4.3 if语句的三种形式,第4章 选择程序设计,(2) 在标准ifelse结构和ifelse if阶梯结构中,每个else前面应有一分号,整个语句结束处
6、有一分号。例如: if (x0) printf (“%f“,x); else printf(“%f“,-x); if语句中的内嵌语句要求用分号结尾,但该分号只是作为间隔符,if/else属于同一个if语句。else子句不能作为语句单独使用,它必须是if语句的一部分,与if配对使用。,4.3 if语句的三种形式,第4章 选择程序设计,(3) 在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时需用花括号“”将几个语句括起来构成一个复合语句。如: if (abc printf(“area=6.2f“,area); else printf(“it is not a trilat
7、eral“);,4.3 if语句的三种形式,第4章 选择程序设计,例:编写程序,根据输入的学生成绩,给出相应的等级。假设等级划分如下: 90100分 等级为A; 8089分 等级为B; 7079分 等级为C; 6069分 等级为D; 0 59分 等级为E。,4.3 if语句的三种形式,第4章 选择程序设计,#include void main() int score; printf(“Enter score:“); scanf(“%d“, ,4.3 if语句的三种形式,第4章 选择程序设计,该例题中的阶梯结构也可采取按成绩由低到高、分段筛选输出的设计方法。 #include void main
8、() int score; printf(“Enter score: “); scanf(“%d“, ,4.3 if语句的三种形式,第4章 选择程序设计,当然该例题还可采用五个if缺省结构设计如下: #include void main() int score; printf(“Enter score: “); scanf(“%d“,4.3 if语句的三种形式,第4章 选择程序设计,if子句和else子句中可以是任意合法的C语句,if语句也可以,称为嵌套的if语句。内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else子句中。,4.3 嵌套的if语句,1、 在if子句中嵌套具有else子句
9、的if语句 【格式】 if (表达式1) if (表达式2) 语句1; else 语句2; else 语句3; 当表达式1的值为非0时,执行内嵌的ifelse语句; 当表达式1的值为0时,执行语句3。,第4章 选择程序设计,2、 在if子句中嵌套不含 else子句的if语句 【格式】 if (表达式1) if (表达式2)语句1; /*花括号代表复合语句*/ else 语句2 ;,4.3 嵌套的if语句,3. 在else子句中嵌套if语句 (1)嵌套if语句带有else: if (表达式1) 语句1 ; else if (表达式2) 语句2; else 语句3; 或写成: if (表达式1)
10、语句1; else if (表达式2) 语句2; else 语句3;,第4章 选择程序设计,(2)嵌套if语句不带else: if (表达式1) 语句1; else if(表达式2) 语句2; 或写成: if (表达式1) 语句1; else if (表达式2) 语句2 ; 内嵌在else子句中的if语句无论是否有else子句,在语法上都不会引起误会(在if中嵌套容易误会)。建议在设计嵌套的if语句时,尽量把内嵌的if语句嵌在else子句中。 如果不断在else子句中嵌套if语句可形成多层嵌套。,4.3 嵌套的if语句,第4章 选择程序设计,if (表达式1) 语句1; else if (表达
11、式2) 语句2; else if (表达式3) 语句3; else if (表达式4) 语句4 else 语句n; 或写成: if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; else if (表达式n-1) 语句n-1; else 语句n;,4.3 嵌套的if语句,第4章 选择程序设计,写程序,判断某一年是否闰年。 闰年条件 :(1)能被4整除,但不能被100整除的年份都是闰年,如1996,2004是闰年; (2)能被100整除,又能被400整除的年份是闰年,如1600,2000是闰年; 方法一: year%4=0&year%100
12、!=0|year%400=0 方法二: (流程图) 采用if-else阶梯结构。另设标志变量leap=1代表闰年;leap=0代表非闰年。 方法三:( N-S图),4.3 if语句应用举例,第4章 选择程序设计,条件运算符一般形式: 表达式1?表达式2:表达式3 例:从键盘输入一个x,计算并输出下列分段函数值: (1)条件运算符优先级比赋值运算符高: y=(xb?a:cd?c:d等价于ab?a: (cd?c:d),4.4 条件运算符,第4章 选择程序设计,条件运算符一般形式: 表达式1?表达式2:表达式3 例:从键盘输入一个x,计算并输出下列分段函数值: (1)条件运算符优先级比赋值运算符高:
13、 y=(xb?a:cd?c:d等价于ab?a: (cd?c:d),4.4 条件运算符,第4章 选择程序设计,例4.9:从键盘输入一个字符,如果输入的是英文大写字母,则将它转换成小写字母后输出,否则输出原来输入的字符。 #include void main() char ch; printf(“input ch:“); scanf(“%c“, ,4.4 条件运算符,printf(“%cn”, =(ch=A,第4章 选择程序设计,Switch语句是多分支选择语句。用来实现多分支选择结构。 【格式】 switch (表达式) case 常量表达式1:语句1; case 常量表达式2:语句2; cas
14、e 常量表达式n:语句n; default :语句n1; ,4.5 switch语句,任意类型,1.switch,case 是关键字;,2.常量表达式必须与switch后面的表达式类型相同;,3.Default是关键字,起标号的作用,代表所有case标号之外的那些标号;,第4章 选择程序设计,例4.8用switch语句编程实现如下功能:输入学生成绩的等级(A、B、C、D、E),打印出对应的百分制分数段。 A:90100 B:8089 C:7079 D:6069 E:059 初步编写程序如下:,4.5 switch语句,第4章 选择程序设计,#include void main() char g
15、rade; printf(“Please input grade:“); scanf(“%c“, ,4.5 switch语句,第4章 选择程序设计,switch语句也可以嵌套。 例4.9 嵌套switch语句的使用。,4.5 switch语句,提示 : (1)switch结构中的表达式、常量表达式1常量表达式必须是整形或字符型。 (2)同一个switch结构中的常量表达式值必须互不相同,否则会出现矛盾的现象。 (3)每个case语句只是一个入口标号,并不能确定执行的终止点,如果遇不到终止语句break,程序会从入口点开始一直执行到switch结构的结束点; (4)case语句标号后语句可以是一
16、条语句,也可以是若干语句,但花括号可有可无;,第4章 选择程序设计,#include void main() char ch1,ch2; printf(“(1)Input A or B :“); ch1=getchar(); switch(ch1) case A: printf(“This A is part of outer switch.n“); ch2=getchar(); printf(“(2)Input A or B :“); ch2=getchar();,4.5 switch语句,第4章 选择程序设计,switch(ch2) case A: printf(“This A is pa
17、rt of inner switch.n“); break; case B: printf(“This B is part of inner switch.n“); break; break; case B: printf(“This B is part of outer switch.n“); break; default: printf(“You must enter A or B.n“); ,4.5 switch语句,第4章 选择程序设计,例4.10 根据输入的学生成绩,给出相应的等级。假设等级划分如下: 90100分 等级为A; 8089分 等级为B; 7079分 等级为C; 6069
18、分 等级为D; 059分 等级为E。,4.5 switch语句,第4章 选择程序设计,#include void main() int score; printf(“Please input score:“); scanf(“%d“,4.5 switch语句,第4章 选择程序设计,case 5 : case 4 : case 3 : case 2 : case 1 : case 0 : printf(“grade is E.n“);break; default: printf(“Input error!n“); ,4.5 switch语句,第4章 选择程序设计,例4.12 用switch语句创
19、建一个简单的帮助系统:在系统中描述if、ifelse if、switch的含义。系统首先显示帮助主题,然后等待用户输入选项,输入的选项被switch用来选择显示所需的帮助主题信息(读者可能会对这个程序中的扩展帮助信息感兴趣,可以加入更多的新的主题)。,4.5 switch语句,第4章 选择程序设计,#include void main() int choice; printf(“*n“); printf(“ Help on:nn“); printf(“ 1. ifn“); printf(“ 2. if-else ifn“); printf(“ 3. switchnn“); printf(“*n
20、“); printf(“ Enter choice (1-3):“); scanf(“%d“,4.5 switch语句应用举例,第4章 选择程序设计,switch(choice) case 1 : printf(“if is cs conditional branch statement.n“); break; case 2 : printf(“if-else if is cs multiway branch statement.n“); break; case 3 : printf(“switch is cs multiway branch statement.n“); break; def
21、ault: printf(“You must enter a number between 1 and 3.n“); ,4.5 switch语句应用举例,第4章 选择程序设计,例4.11:编制一个C程序,其功能是:首先从键盘一次输入两个实数作为运算对象(两个实数之间用逗号分隔),然后从键盘再输入一个运算符,最后输出运算结果。其中运算符的符号分别是: 加法运算符:“+”; 减法运算符:“-”; 乘法运算符:“*”或“.”; 除法运算符:“/”; 在作除法运算时,如果第二个实数为0时,要求输出信息“err!”。如果输入的运算符不是上述所定义的运算符,要求输出信息”Incorrect symbol!”。,4.5 switch语句应用举例,第4章 选择程序设计,4.5.1 语句标号 4.5.2 goto语句,4.6 语句标号和goto语句,第4章 选择程序设计,练习: 试编写一程序,要求从键盘中输入月份,输出该月份所对应的天数。 注意: 大月和小月的不同; 2月的处理(闰年和非闰年);,
链接地址:https://www.31doc.com/p-2566664.html