第4章选择程序设计.ppt

上传人:夺命阿水 文档编号:740827 上传时间:2023-11-03 格式:PPT 页数:43 大小:879KB
返回 下载 相关 举报
第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);,选择程序设计引例,例:输入一个大写字母,转化为小写字母输出。,#include ma

2、in()char c;printf(输入一个字符:);c=getchar();if(c=A,if(c=65&c=90),5,关系运算符,关系运算符,!=,=,=,=,操作数1,操作数2,运算优先级:、=、=高于!=、=,6,关系运算符与关系表达式,操作数,关系运算符,关系表达式的计算结果=逻辑值(真或假),“假”=“0”,“真”=“1”在判断时,“0”表示“假”,“非0”表示“真”,操作数,关系运算符用于测试两个操作数或两个表达式之间的关系,其中操作数可以是变量、常量或表达式。用关系运算符将二个表达式连接起来称为关系表达式。,7,逻辑运算符与逻辑表达式,逻辑运算符用于连接一个或多个条件,判断这

3、些条件是否成立由逻辑运算符连接起来的表达式,称为逻辑表达式。逻辑运算符的类型为:,8,逻辑运算符总结,&,只有当两个条件都为真时才执行操作,只要任何一个条件为真时就执行操作,对原条件取反,即:如果原条件为假时就执行操作,|,!,9,逻辑运算符注意事项,运算优先级:!关系运算符&|短路运算:逻辑表达式在执行时,先处理左边。如左边已能决定此逻辑表达式的结果,则右边不执行。因此,在&逻辑表达式中,应把false可能性较大的条件放在左边,在|表达式中,应把true可能性较大的条件放在左边,这样可以减少程序执行的时间。例如,假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式

4、“(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=3B学生的回答可表示为:a=4&b=1&c=2&d=3C学生的回答可表示为:a=3&b=4D学生的回答可表示为:a=3&b=2&c=1&d=4,11,条件结构,条件结构就是需要根据不同条件进行判断,然后执行不同的操作简单 if 语句

5、的一般形式为:,if(),如果条件为真,if 语句执行一个语句或一组语句;如果条件为假,则执行 if 语句后面的语句(如果有)。,12,条件结构,if-else 语句的一般形式为:,if()else,如果条件为真,执行 if 后面的一个语句或一组语句;如果条件为假,则执行 else 后面的语句。,13,#include main()/*求a和b的最大值*/int a,b,max;printf(Input a and b=);scanf(%d%d,求 a 和 b 两数中较大的一个。,简单if语句使用,14,if-else语句的使用,求 a 和 b 两数中较大的一个。,#include main(

6、)/*求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);elseprintf(%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(

7、x0)y=x-1;,17,多重if,要处理多重条件判断的情况,需要使用多重条件结构,多重条件结构,嵌套 if,switch结构,18,if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;.else 语句n;,多重 if 结构是if-else 的另一种形式,这种形式也称为阶梯式 if-else-if,多重 if 结构,19,多重 if 结构示例,问题描述:编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于90分输出“优”;成绩大于等于80分小于90分输出“良”;成绩大于等于60分小于80分输出“中”;成绩小于60分输出“差”。,

8、#include main()float grade;printf(n 请输入期末考试成绩:);scanf(%f,20,嵌套 if 结构就是将整个 if 块插入另一个 if 块中,嵌套 if 结构,if(表达式1)if(表达式2)if(表达式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所在的象限。,

9、分析:将x和y的值分别与0进行比较,即可判断出点M(x,y)所处的象限。在这里,不考虑坐标轴上的点,认为它们可以处于任意象限。,嵌套 if 结构的使用,23,#include main()float 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结构时应注意以下几

10、点:在case后的各常量表达式的值不能相同,否则会出现错误;在case后,允许有多个语句,可以不用括起来;每个case语句后一般情况下应该有一个break语句,用于退出swith结构;各case和default子句的先后顺序可以变动,而不会影响程序执行结果;default子句可以省略。,26,例:将百分制成绩划分为五段输出,用switch语句实现。,分析:除不及格档次外,其他各等级中每个数的十位数字均相同(100除外),我们可以用成绩的十位数字作条件来写程序。设成绩为score,除以10取整后的结果为k。,switch结构使用,27,#include main()int score,k;pri

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

12、30,条件运算符,?,?,条件表达式,考试是否及格?,是,不是,真,表达式 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之间的为

13、数字,在AZ之间为大写字母,在az之间为小写字母,其余则为其它字符。,#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、

14、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,选择程序设计,月份中天数的判断switchswitch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:/31天 case 4:case 6:case 9:case 11:/30天 ca

15、se 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、11月份 days=30;else if()/闰年的二月份 days=29;else/非闰年的二月份 days=28;,40,#

16、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备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号