《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构

上传人:E**** 文档编号:89434154 上传时间:2019-05-25 格式:PPT 页数:59 大小:135KB
返回 下载 相关 举报
《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构_第1页
第1页 / 共59页
《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构_第2页
第2页 / 共59页
《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构_第3页
第3页 / 共59页
《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构_第4页
第4页 / 共59页
《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构》由会员分享,可在线阅读,更多相关《《C语言程序设计实用教程》-唐新国-电子教案 第四章 选择结构(59页珍藏版)》请在金锄头文库上搜索。

1、第4章 选择结构,本章学习目标,C语言提供了可以进行逻辑判断的选择语句,由选择语句构成的选择结构将根据逻辑判断的结果决定程序的不同流程。选择结构是结构化程序设计的三种基本结构之一。本章将详细介绍如何在C程序中实现选择结构。通过本章的学习,读者应该掌握以下内容: if语句和用if语句构成的选择结构 switch语句以及用switch语句和break语句构 成的选择结构,4.1 if语句和用if语句构成的选择结构,4.1.1 相关知识 C语言的if语句的根本特点是先计算所给定的选择条件的值,若值为真则执行为真的分支,否则执行为假的分支。 4.1.2 程序范例 1范例一 程序4-1:输入两个数,分别

2、放入x和y中,若两数不相等,则输出其中的大数;若两数 相等,则输出字符串“x=y”和x的值。,main() int x,y; printf(“Enter x ,本题是一个应用if语句的简单程序,其执行过程如下: (1)printf语句在屏幕上显示了提示信息:Enter x & y:之后,scanf语句等待用户给变量x、y输入两个整数。然后把输入的两个数显示在屏幕上。 (2)执行第5行的if语句。计算表达式xy的值;如果x大于y,表达式的值为1,则调用printf函数输出x的值;否则,如果x小于或者等于y,表达式的值为0,则跳过此输出语句继续执行步骤(3)。,(3)执行第6行的if语句。计算表达

3、式yx的值;如果y大于x,则调用printf函数,输出y的值;否则跳过些输出语句继续执行步骤(4)。 (4)执行第7行的if语句。计算表达式x=y的值;如果x等于y,则调用printf函数输出x的值;否则跳过些输出语句继续执行步骤(5)。 (5)结束程序。,2范例二 程序4-2:输入三个整数,分别放在变量a、b、c中,程序把输入的数据重新按由小到大的顺序放在变量a、b、c中,最后输出a、b、c的值。 main() int a,b,c,t; printf(“input a,b,c: “); scanf(“%d%d%d“, ,if(ac) /*如果a比c大,则进行交换,把小的数放入a 中*/ t=

4、a; a=c; c=t; /*至此a、b、c中最小的数已放入a 中*/ if(bc) /*如果b比c大,则进行交换,把小的数放入b 中*/ t=b; b=c; c=t; /*至此a、b、c中的数已按由小到大的顺序放好*/ printf(“%d,%d,%dn“,a,b,c); 以上程序无论给a、b、c输入什么数,最后总是把最小数放在a中,把最大数放在c中。,3范例三 程序4-3:输入两个不等的整数分别给x和y,输出其中的大数。 main() int x,y; printf(“Enter x else,printf(“max=y=%dn“,y); printf(“*end*n“); 当执行以上程序

5、时,若把5输入给变量x,把3输入给变量y;则if后表达式xy的值为1,因此,将执行if子句,输出x的值;然后调用最后一行中的printf函数,输出字符串:*end*。 如果给x输入3,给y输入5,这时if语句中表达式xy的值为0,因此将跳过if子句,直接执行else分支中的else子句,输出y的值;然后执行最后一行中的语句,输出字符串:*end*。,4范例四 程序4-4:根据输入的学生成绩给出相应的等级。90分以上的等级为A,60分以下的等级为E,其余每10分为一个等级。 main() int g; printf(“Enter g: “); scanf(“%d“, if(g=90),print

6、f(“An“); else if(g=80) printf(“Bn“); else if(g=70) printf(“Cn“); else if(g=60) printf(“Dn“); else printf(“En“); 当执行以上程序时,首先输出学生的成绩,然后进入if语句;if语句中的表达式将依次对学生成绩进行判,断,若能使某if后的表达式值为1,则执行与其相应的子句,之后便退出整个if结构。 例如,若输入的成绩为72分,首先输出“g=72:”,当从上向下逐一检测时,使g=70这一表达式的值为1,因此在输出“g=72:”之后再输出C,便退出整个if结构。 如果输入55分,则首先输出“g=

7、55:”,因为所有if子句中表达式的值都为0,因此执行最后else子句中的语句,输出E,然后退出if结构。 4.1.3 知识归纳 1不含else子句的if语句 (1)语句形式如下:,if(表达式)语句; 例如: if(ab)t=a; a=b; b=t; 其中,if是C语言的关键字,表达式两侧的圆括号不可少,最后是一条语句,称为if子句。如果在if子句中需要多条语句,则应该使用花括号把一组语句括起来组成复合句,这样在语法上仍满足“一条语句”的要求。 (2)if语句的执行过程。首先计算紧跟在if后面一对圆括号中表达式的值,如果表达式的值为非零(“真”),则执行其后的if子句,然后去执行if语句后的

8、下一个语句。如果表达式的值为零(“假”),则跳过if 子句,直接执行if语句后的下一个语句。,2含else子句的if语句 (1)语句形式如下: if(表达式) 语句1 else 语句2 例如: if(a!=0)printf(“a!=0n“); else printf(“a=0n“); 在这里,“语句1”称为if子句,“语句2”称为else 子句,这些子句只允许是一条语句,若需要多条语句时,则应该使用花括号把这些语句括起来组成复合语句。,读者应该注意:else不是一条独立的语句,它只是if 语句的一部分,不允许有这样的语句: else printf(“*“); 在程序中else必须与if配对,共

9、同组成一条if-else语句。 (2)if-else语句的执行过程。首先计算紧跟在if 后面一对圆括号内表达式的值。如果表达式的值为非零,执行if子句,然后跳过 else子句,去执行if语句后的下一条语句;如果表达式的值为零,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。,3说明 (1)if后面圆括号中的表达式,可以是任意合法的C语言表达式(如:逻辑表达式、关 系表达式、算术表达式、赋值表达式等),也可以是任意类型的数据(如:整型、实型、字符型等)。 (2)无论是否有else子句,if子句中如果只有一条语句,则此语句后的分号不能省略。 如: if(x!=0) printf

10、(“%f“,x); 此处的分号不能省略 else printf(“%f“,y);,4嵌套的if语句 if和else子句中可以是任意合法的C语句,也可以是if语句,通常称此为嵌套的if 语句。内嵌的if语句既可以嵌套在if子句中,也可以嵌套在else 子句中。 (1)在if 子句中嵌套具有else子句的if语句。 语句形式如下: if(表达式1) if(表达式2)语句1 else 语句2 else 语句3 当表达式1的值为非0时,执行内嵌的if-else语句;当表达式1的值为0时,执行语句3。,(2)在if子句中嵌套不含else子句的if语句。 语句形式如下: if(表达式1) if(表达式2)

11、 语句1 else 语句2 注意:if子句中的一对花括号不可缺少。 C语言的语法规定:else子句总是与前面最近的不带else的if相结合,与书写格式无关。因此以上语句如果写成: if(表达式1),if(表达式2) 语句1 else 语句2 实质上等价于: if(表达式1) if(表达式2) 语句1 else 语句2 当用花括号把内层if语句括起来后,使得此内层if语句在语法上成为一条独立的语句,从而使得else与外层的if配对。,(3)在else子句中嵌套if语句。 语句形式如下: 1)嵌套if语句带有else: 2)嵌套if语句不带else: if(表达式1) 语句1 if(表达式1) 语

12、句1 else if(表达式2) 语句2 else if(表达式2) 语句2 else 语句3,C语言程序有比较自由的书写格式,但是过于“自由”的程序书写格式,往往使人们想到很难读懂,因此要求读者参考本书例题程序中按层缩进的书写格式来写自己的程序。 不断在else子句中嵌套if语句可形成多层嵌套。如:,if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达式4) 语句4 ,else 语句n 这时形成了阶梯形的嵌套if语句,此语句可用以下语句形式表示,使得读起来既层次分明又不占太多的篇幅。 if(表达式1) 语句1 else if(

13、表达式2) 语句2 else if(表达式3),语句3 else if(表达式4) 语句4 else 语句n,以上形式的嵌套if语句执行过程可以这样理解:从上向下逐行对if后的表达式进行检测。当某一个表达式的值为非零时,就执行与此有关子句中的语句,阶梯形中的其余部分被越过去。如果所有表达式的值都为零,则执行最后的else子句;此时,如果程序中最内层的if语句没有else子句,即没有最后的那个else子句,那么将不进行任何操作。,4.1.4 实例验证 程序4-5:输入一个数,判别它是否能被3整除;若能被3整除,打印YES;不能被3整除,打印NO。 main( ) int n; printf(“i

14、nput n: “); scanf(“%d“, ,4.2 switch语句及用switch语句和break语句构成的选择结构,4.2.1 相关知识 用if语句只能进行两路选择,但在实现多路选择时须使用多个if语句,因此用if语句解决多路问题非常不方便,这时可利用switch语句实现多条件多分支程序设计。 4.2.2 程序范例 程序4-6:根据输入的学生成绩,输出对应的等级。 程序如下:,main( ) int g ; printf(“Enter a mark : “); scanf(“%d“, switch(g/10) case 10 :,case 9 : printf(“An“); case

15、 8 : printf(“Bn“); case 7 : printf(“Cn“); case 6 : printf(“Dn“); default : printf(“En“); 当执行以上程序输入一个85分的学生成绩后,接着执行switch语句,首先计算switch后一对括号中的表达式:85/10,它的值为8; 然后寻找与8吻合的case 8分支,开始执行其后的各语句。程序的输出结果如下,g=85 :B C D E 在输出与85分相关的B之后,又同时输出了与85分毫不相关的等级C、D、E,这显然不符合原意。,4.2.3 知识归纳 1语句形式 switch语句形式如下: switch(表达式) case 常量表达式1:语句1 case 常量表达式2:语句2 case 常量表达式n:语句n default :语句n+1 ,说明: (1)switch是关键字,switch语句后面用花括号括起来的部分称为switch语句体。 (2)紧跟在switch后一对括号的“表达式”可以是整型表达式及后面将要学习的字符型或枚举型表达式等。表达式两边的一对括号不能省略。 (3)case也是关键字,与其后面的常量表达式合称case语句标号。常量表达式的类型必须与switch后的表达式类型相同。各case语句标号的值应该互不相同。 (4)default也是关键字,起标号的作用,代表所有

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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

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