第4章选择程序设计.ppt

上传人:本田雅阁 文档编号:2979759 上传时间:2019-06-17 格式:PPT 页数:43 大小:1.19MB
返回 下载 相关 举报
第4章选择程序设计.ppt_第1页
第1页 / 共43页
第4章选择程序设计.ppt_第2页
第2页 / 共43页
第4章选择程序设计.ppt_第3页
第3页 / 共43页
第4章选择程序设计.ppt_第4页
第4页 / 共43页
第4章选择程序设计.ppt_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《第4章选择程序设计.ppt》由会员分享,可在线阅读,更多相关《第4章选择程序设计.ppt(43页珍藏版)》请在三一文库上搜索。

1、第4章 选择程序设计,2,回顾,了解语句的基本概念 了解语句的分类 掌握字符输入输出函数getchar和putchar 掌握格式输入输出函数scanf和printf 掌握顺序程序设计,3,教学目标,熟练使用关系运算符 熟练使用逻辑运算符 掌握简单的条件语句的使用 熟练使用多重 if 结构 熟练使用嵌套 if 结构 熟练使用 switch 结构 理解条件运算符的用法 掌握选择程序设计的基本方法,4,#include main() char c; printf (“输入一个字符:“); c = getchar( ); c = c + 32; putchar( c ); ,选择程序设计引例,例: 输

2、入一个大写字母, 转化为小写字母输出。,#include main() char c; printf (“输入一个字符:“); c = getchar( ); if(c=A ,if(c=65 & c=90),5,关系运算符,关系运算符,!=,=,=,=,操作数1,操作数2,运算优先级:、 = 、 、= 高于 != 、=,6,关系运算符与关系表达式,操作数,关系运算符,关系表达式的 计算结果 = 逻辑值(真或假),“假”=“0”,“真”=“1” 在判断时,“0”表示“假”,“非0”表示“真”,操作数,关系运算符用于测试两个操作数或两个表达式之间的关系,其中操作数可以是变量、常量或表达式。 用关系

3、运算符将二个表达式连接起来称为关系表达式。,7,逻辑运算符与逻辑表达式,逻辑运算符用于连接一个或多个条件,判断这些条件是否成立 由逻辑运算符连接起来的表达式,称为逻辑表达式。 逻辑运算符的类型为:,8,逻辑运算符总结,&,只有当两个条件都为真时才执行操作,只要任何一个条件为真时就执行操作,对原条件取反,即:如果原条件为假时就执行操作,|,!,9,逻辑运算符注意事项,运算优先级:! 关系运算符 & | 短路运算:逻辑表达式在执行时,先处理左边。如左边已能决定此逻辑表达式的结果,则右边不执行。因此,在& 逻辑表达式中,应把false可能性较大的条件放在左边,在|表达式中,应把true可能性较大的条

4、件放在左边,这样可以减少程序执行的时间。 例如,假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式“(x=n1n2)&(y=n3n4)”后, x的值变为0,而y的值不变,仍等于1!,10,将关系写成表达式,A:洞庭最大,洪泽最小,鄱阳第三 B:洪泽最大,洞庭最小,鄱阳第二,太湖第三 C:洪泽最小,洞庭第三 D:鄱阳最大,太湖最小,洪泽第二,洞庭第三,用a,b,c,d分别表示四个湖。a表示洞庭,b表示洪泽,c表示鄱阳,d表示太湖。 A学生的回答可表示为:a=1 & b=4 & c=3 B学生的回答可表示为:a=4 & b=1 & c=2 & d=3 C学生的回答可表

5、示为:a=3 & b=4 D学生的回答可表示为:a=3 & b=2 & c=1 & d=4,11,条件结构,条件结构就是需要根据不同条件进行判断,然后执行不同的操作 简单 if 语句的一般形式为:,if () ,如果条件为真,if 语句执行一个语句或一组语句; 如果条件为假,则执行 if 语句后面的语句(如果有)。,12,条件结构,if-else 语句的一般形式为:,if () else ,如果条件为真,执行 if 后面的一个语句或一组语句; 如果条件为假,则执行 else 后面的语句。,13,#include main( ) /* 求a和b的最大值 */ int a,b,max; print

6、f(“Input a and b=“); scanf(“%d%d“, ,求 a 和 b 两数中较大的一个。,简单if语句使用,14,if-else语句的使用,求 a 和 b 两数中较大的一个。,#include main( ) /* 求a和b的最大值 */ int a,b,max; printf(“Input a and b=“); scanf(“%d%d“, ,15,if-else语句的使用,#include main() int num; printf(“n请输入一个整数:“); scanf (“%d“, ,if(num % 2) printf(“%d 是一个奇数。n“,num); els

7、e printf(“%d 是一个偶数。n“,num);,16,简单if 和if-else语句的使用,求分段函数值,#include main( ) int x,y; scanf(“%d“, ,if(x=0) y=x+1; else y=x-1;,y=x-1; if(x=0) y=x+1;,y=x+1; if(x0) y=x-1;,17,多重if,要处理多重条件判断的情况,需要使用多重条件结构,多重条件结构,嵌套 if,switch结构,18,if (表达式1) 语句1; else if (表达式2) 语句2; else if (表达式3) 语句3; . . else 语句n;,多重 if 结构

8、是if-else 的另一种形式 ,这种形式也称为阶梯式 if-else-if,多重 if 结构,19,多重 if 结构示例,问题描述: 编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于90分输出“优”;成绩大于等于80分小于90分输出“良”;成绩大于等于60分小于80分输出“中”;成绩小于60分输出“差”。,#include main() float grade; printf(“n 请输入期末考试成绩: “); scanf(“%f“, ,20,嵌套 if 结构就是将整个 if 块插入另一个 if 块中,嵌套 if 结构,if (表达式1) if (表达式2) i

9、f (表达式3) 语句; else 语句;,21,if (x 0) if (y 1) z = 1; else /*这个 else 部分属于哪个 if?*/ z = 2;,嵌套 if 结构,C语言规定,每个 else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。 提倡使用大括号括起来,以避免看起来有二义性。,?,22,例:根据平面上一点M (x, y)的坐标判断点M所在的象限。,分析: 将x和y的值分别与0进行比较,即可判断出点M (x, y)所处的象限。在这里,不考虑坐标轴上的点,认为它们可以处于任意象限。,嵌套 if 结构的使用,23,#include main() f

10、loat x, y; printf (“input x, y: “); scanf (“%f,%f“, ,嵌套 if 结构的使用,24,switch-case 语句是多路判断语句 switch 语句计算条件表达式并对照多个常数值进行检查,switch结构,switch (表达式) case 常量 1: 语句; break; case 常量 2: 语句; break; default: 语句; ,25,switch结构,在使用switch结构时应注意以下几点: 在case后的各常量表达式的值不能相同,否则会出现错误; 在case后,允许有多个语句,可以不用括起来; 每个case语句后一般情况下应

11、该有一个break语句,用于退出swith结构; 各case和default子句的先后顺序可以变动,而不会影响程序执行结果; default子句可以省略。,26,例:将百分制成绩划分为五段输出,用switch语句实现。,分析:除不及格档次外,其他各等级中每个数的十位数字均相同(100除外),我们可以用成绩的十位数字作条件来写程序。设成绩为score,除以10取整后的结果为k 。,switch结构使用,27,#include main() int score, k; printf ( “input a score: “); scanf ( “%d“, ,switch 结构,28,switch结构

12、使用,用户输入月份,显示该月的最大天数。,#include main() int month; printf(“n 请输入月份数:“); scanf(“%d“, ,29,多重if结构和switch结构都可以用来实现多路分支 多重if结构用来实现两路、三路分支比较方便,而switch结构实现三路以上分支比较方便 在使用switch结构时,应注意分支条件要求是整型表达式,而且case语句后面必须是常量表达式 有些问题只能使用多重if结构来实现,例如要判断一个值是否处在某个区间的情况,比较多重 if 和 switch 结构,30,条件运算符,?,?,条件表达式,考试是 否及格?,是,不是,真,表达式

13、 1,假,表达式 2,31,例:从键盘上输入任意一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,不做转化,直接输出。,分析:输入的字符只要在A和Z之间,就是大写字母,再加上32即可转换成小写字母。,#include main() char ch; printf(“Input a character: “); scanf(“%c“, ,条件运算符,if(ch=A ,32,选择程序设计,问题描述: 要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII码值小于32的为控制字符。 在09之间的为数字,在AZ之间为大写字母, 在az之间为小写字

14、母,其余则为其它字符。,#include main() char c; printf(“n 请输入一个字符: “); c=getchar(); if(c=0 ,33,选择程序设计,问题描述: 编写一个简单的计算器,实现两个整型数的四则运算。,#include main() int a,b; char op; printf(“n 输入操作数1,运算符,操作数2: “); scanf(“%d,%c,%d“, ,34,选择程序设计,求某年某月的天数。 解题思路: 对年份进行闰年的判断,如果是闰年,2月份有29天;否则有28天。 对月份进行天数的判断,一个月有30天(4、6、9、11月),31天(1、

15、3、5、7、8、10、12月),28天或29天(2月),35,选择程序设计,闰年的判断规则: 能被400整除,如2000年,1600年。 年份能被4整除,不能被100整除,如1996年,2004年。 逻辑表达式判断闰年 ( year % 400 = 0) | (year % 4 = 0 & year % 100 != 0) 如果上述表达式的结果为1,则year是闰年;否则为非闰年。,36,选择程序设计,月份中天数的判断 switch switch(month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: /31天 case

16、 4: case 6: case 9: case 11: /30天 case 2: /闰年29天,非闰年28天 ,37,#include main() int year,month; printf(“n 请输入年份和月份:“); scanf(“%d%d“, ,选择程序设计,38,#include main() int year, month, days; printf(“n 请输入年份和月份:“); scanf(“%d%d“, ,选择程序设计,39,选择程序设计,月份中天数的判断 嵌套if if( ) /1、3、5、7、8、10、12月份 days=31; else if( ) /4、6、9、

17、11月份 days=30; else if( ) /闰年的二月份 days=29; else /非闰年的二月份 days=28;,40,#include main() int year,month,days; printf(“n 请输入年份和月份:“); scanf(“%d%d“, ,选择程序设计,41,选择程序设计,#include main() int year,month,days; printf(“n 请输入年份和月份:“); scanf(“%d%d“, ,42,总结,关系运算符 逻辑运算符 掌握if语句的基本使用方法 多重if结构就是在主if块的else部分中还包含其他if块 嵌套if结构是在主if块中还包含另一个if 语句 C语言规定,嵌套if结构中每个else部分总是属于前面最近的那个缺少对应的else部分的if语句 switch结构也可以用于多分支选择。用于分支条件是整型表达式,而且判断该整型表达式的值是否等于某些值(可以罗列的),然后根据不同的情况,执行不同的操作 条件运算符是 ifelse 语句的另一种表现形式,43,Thank you,Question?,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1