C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计

上传人:E**** 文档编号:89382001 上传时间:2019-05-24 格式:PPT 页数:19 大小:276KB
返回 下载 相关 举报
C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计_第1页
第1页 / 共19页
C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计_第2页
第2页 / 共19页
C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计_第3页
第3页 / 共19页
C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计_第4页
第4页 / 共19页
C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计》由会员分享,可在线阅读,更多相关《C语言程序设计(第二版)-电子教案-任正云 第4章选择结构程序设计(19页珍藏版)》请在金锄头文库上搜索。

1、1,第4章 选择结构程序设计,选择结构的作用是根据给定的条件来决定做什么的操作。 if语句 if-else语句 if-else if-else语句,2,4.1.1 if语句的形式,单if语句 其一般形式为: if (表达式) 语句,系统首先对表达式求解,当结果为“真”(非0)时,则执行指定 的语句;否则跳过指定语句,接着执行if语句的下一语句。,4.1 if语句,3,例4.1,求两个整数中较大者。,分析:,可设三个变量a,b,max。首先假设max=a,然后判 断max和b,若maxb,则max=b,最后输出max。,#include “stdio.h“ void main() int a,b

2、,max; printf(“请输入a,b的值n“); scanf(“%d,%d“, ,4,if-else语句 其一般形式为: if (表达式) 语句1 else 语句2,系统先对表达式求解,当结果为“真”(非0)时,执行语句1; 当结果为“假”(0)时,执行语句2。,5,例4.2,利用if-else语句编写程序,求两个整数中较大者。,#include “stdio.h“ void main() int a,b; printf(“a,b=“); scanf(“%d,%d“, ,6,if-else if-else语句 其一般形式为: if (表达式1) 语句1 else if (表达式2) 语句2

3、 else if (表达式3) 语句3 else if (表达式n-1) 语句n-1 else 语句n,系统首先求解表达式1的值,当其值为“真”(非0)时,执行语句1,然后跳出 该选择结构;否则求解表达式2的值,当其值为“真”(非0)时,则执行语句2, 然后跳出该选择结构;否则再继续求解表达式3,当其值为“真”(非0)时, 执行语句3,然后跳出该选择结构;否则接着进行判断,依次类推。如果经过 求解,所有的表达式都为“假”(0),就执行最后一个else部分的语句n,从而 结束整个if语句。,7,例4.3,给出百分制的成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8089分为B,707

4、9分为C,6069分为D,60分以下为E。,分析:,设成绩为score,假设取值在0100之间,没有错误的输入,则有: 0score60 E 60score69 D 70score79 C 80score89 B 90score100 A,#include “stdio.h“ void main() int score; printf(“请输入学生的成绩n“); scanf(“%d“, ,#include “stdio.h“ void main() int score; printf(“请输入学生的成绩n“); scanf(“%d“, ,#include “stdio.h“ void main

5、() int score; printf(“请输入学生的成绩n“); scanf(“%d“, ,8,在使用if语句中还应注意以下问题: (1)if语句中的表达式通常是逻辑表达式或关系表达式,也可以是其他类型的表达式,如赋值表达式等,甚至可以是一个变量。 (2)在if语句中,表达式必须用括号括起来,在语句之后必须加分号。 (3)在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句,但要注意的是在之后不能再加分号。,if (a=5) 语句; if (b) 语句;,if (a=b) printf(“%d“,a); els

6、e printf(“a=0“); 该语句的语义是:把b值赋予a,如为非0则输出该值, 否则输出“a=0“字符串。这种用法在程序中是经常出现的。,if (ab) a+; b+; else a=0; b=10;,9,4.1.2 if语句的嵌套,在if语句中又包含一个或多个if语句称为if 语句的嵌套。 if语句可以内嵌在if子句中,又可以内嵌在else子句中。 if ( ) if ( ) 内嵌if 语句1 else 语句2 else if ( ) 内嵌if 语句3 else 语句4,内嵌if,内嵌if,如果if与else的数目不一样,为实现程序设计者的企图, 可以加花括号来确定配对关系。 if (

7、 ) if ( ) 语句1 (内嵌if) else 语句2 这时 限定了内嵌if语句的范围,因此else与第一个if配对。,10,例4.4,猜数程序,和预定的数比较,并给出相应的提示。,#include “stdio.h“ void main() int number=200; int i; scanf(“%d“, ,11,例4.5,求三个整数a,b,c中的最大数。,#include “stdio.h“ void main() int a,b,c,max; printf(“a,b,c=“); scanf(“%d,%d,%d“, ,通过这个例子可以认识到: (1)不平衡的if-else结构会增加

8、阅读和理解程序的困难。 (2)正确的缩进格式(即锯齿形书写格式)可以帮助人们 理解程序,但错误的缩进格式反而会使人迷惑。 (3)不要太相信自己的判断,要严格按语法关系检查程序。 在不易弄清的地方可以加花括号来保证自己构思的逻辑关 系的正确性。,#include “stdio.h“ void main() int a,b,c,max; printf(“请输入a,b,c的值n“); scanf(“%d,%d,%d“, ,12,4.2 switch语句,一般形式为: switch (表达式) case常量表达式1: 语句1; case常量表达式2: 语句2; case常量表达式n: 语句n; def

9、ault : 语句n+1; ,执行时,系统首先求解表达式的值,然后依次与各个case后面给出的常量表达式的值相比较,当表达式的值与某个case后的常量表达式的值相等时,就从此处开始执行该case后面的语句,而不再进行判断。 如果所有的case后面的常量表达式的值都和表达式的值不匹配,系统就执行default后面的语句,如果程序省略了default语句,那么将不作任何处理,接着执行该选择结构下面的语句。,13,例4.6,输入一个星期数字,输出其对应的英文单词。,#include “stdio.h“ void main() int a; printf(“请输入一个星期数字(17):“); scan

10、f(“%d“, ,结果:当输入3之后,却执行了case 3以及以后的所有语句,输出了Wednesday及以后的所有单词。,switch (a) case 1:printf(“Mondayn“);break; case 2:printf(“Tuesdayn“);break; case 3:printf(“Wednesdayn“);break; case 4:printf(“Thursdayn“);break; case 5:printf(“Fridayn“);break; case 6:printf(“Saturdayn“);break; case 7:printf(“Sundayn“);bre

11、ak; default:printf(“Error!n“); ,在switch语句中,“case常量表达式”只相当于一个语句标号, 当表达式的值和某标号相等则转向该标号执行,但不能在执 行完该标号的语句后自动跳出整个switch 语句,所以出现了 继续执行所有后面case语句的情况。,14,在使用switch语句时还应注意以下几点: 可以是任何类型,经常采用整型或字符型表达式。 case后面必须是常量表达式,不能包含变量,且各常量表达式的值不能相同,否则会出现互相矛盾的现象。因为case后面的常量表达式实际上起语句标号的作用,而程序中不应该同时出现相同标号的语句。 在case后,允许有多个语句

12、,可以不用括起来。 各case和default子句的先后顺序可以变动,而不会影响程序执行结果。 多个case可以共用同一组执行语句,此时只有在包含语句的case中有break语句,而其他case中则不包含break语句。 (6)switch语句也可以内嵌在某个case语句中使用,还可以和if语句或if语句的嵌套形式互相嵌套使用。,15,例4.7,输入任一平年的月份,输出该月份对应的天数。,分析: 设月份为month,天数为day,则有: month=1,3,5,7,8,10,12 day=31 month=4,6,9,11 day=30 month=2 day=28,#include “std

13、io.h“ void main() int month,day; printf(“请输入月份(1-12):“); scanf(“%d“, ,if-else if-else 语句与switch语句是多分支选择的两种形式。 它们的应用环境不同: if-else if-else语句用于对多条件并列测试,从中取一的情形; switch语句用于单条件测试,从其多种结果中取一的情形。,16,4.3 程序举例,例4.8,输入三个整数,输出最大数和最小数。,#include “stdio.h“ void main() int a,b,c,max,min; printf(“请输入a,b,c的值n“); scan

14、f(“%d,%d,%d“, ,首先比较a,b的大小,把大数装入max,小数装入min中。 然后再与c比较,若max小于c,则把c赋予max; 如果c小于min,则把c赋予min。 因此max总是最大数,而min总是最小数。 最后输出max和min的值即可。,17,例4.9,计算器程序。用户输入运算数和四则运算符,输出计算结果。,#include “stdio.h“ void main() float a,b; char c; printf(“请输入运算数和四则运算符如a+(-,*,/)b:“); scanf(“%f%c%f“, ,18,例4.10,求一元二次方程ax +bx+c=0的根。,#i

15、nclude“stdio.h“ #include“math.h“ void main() float a,b,c,disc,x1,x2,realpart,imagpart; printf(“请输入a,b,c的值n“); scanf(“%f,%f,%f“, ,2,19,例4.11,已知某公司员工的底薪为500元,该员工在某月所接工程项目的利润profit与个人提成的关系如下(计量单位:元):利润profit1000,没有提成;利润在1000profit2000时,提成是所有利润的10%;当利润在2000profit5000之间时,提成是所有利润的15%;当利润在5000profit10000之间时,提成是所有利润的20%;当profit10000时,提成是所有利润的25%。,运行结果为 Input profit:3000 salary=950.00,设:该员工某月的薪水为salary,利润为profit,提成为d(deduct的缩写),则员工改越总的薪水计算公式 为 salary=500+profit*d;,#include void main() int profit; int c; float d=0,salary=500; printf(“Input profit:“); scanf(“%d“, ,

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

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

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