第4章 选择结构程序设计.pptx

上传人(卖家):momomo 文档编号:7215886 上传时间:2023-10-22 格式:PPTX 页数:32 大小:1.20MB
下载 相关 举报
第4章 选择结构程序设计.pptx_第1页
第1页 / 共32页
第4章 选择结构程序设计.pptx_第2页
第2页 / 共32页
第4章 选择结构程序设计.pptx_第3页
第3页 / 共32页
第4章 选择结构程序设计.pptx_第4页
第4页 / 共32页
第4章 选择结构程序设计.pptx_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、第第4章章 选择结构程序设计选择结构程序设计本章重点u if语句的基本形式以及使用。u if语句的嵌套。u 条件表达式。u switch语句的形式以及使用。u break语句在switch语句中的使用。2本章难点u if语句的嵌套形式。u switch语句的执行流程34.1 if 语 句uif语句也叫条件语句,用来判断给定的条件的真假,并根据条件判断的结果(真或假)从给定的两个操作中选择其中的一个执行。44.1.1 if语句的3种基本形式 1.两分支if语句if(表达式)语句1;else语句2;5 需要注意的是,语句1和语句2是“互斥”的,当其中一个语句执行时,另一个语句就不可能执行。作为条件

2、的“表达式”可以是任意类型的表达式,一般是关系表达式或逻辑表达式6【例4.1】所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如,153就是一个水仙花数,因为153=13+53+33。输入一个三位整数,判断该数是否是“水仙花数”。7#include int main()int n,m,a,b,c;printf(请输入一个三位整数:);scanf(%d,&n);a=n%10;b=n/10%10;c=n/100%10;m=a*a*a+b*b*b+c*c*c;if(n=m)printf(%d 是水仙花数.n,n,m);elseprintf(%d 不是水仙花数.n,n,m);retur

3、n 0;82.单分支if语句 if(表达式)语句1;这是if语句的简化形式。该语句执行时,先计算作为条件的“表达式”的值,如果该值为真(不等于0),那么就执行紧跟在其后的语句1,否则就什么都不做。9 注意,如果if结构中的“语句”部分不是单个语句,而是一个语句序列的话,要使用一对花括号把这个语句序列括起来,即把它作为一个复合语句来处理。10【例4.2】输入三个整数a、b、c,将它们按照从小到大的顺序排序。【分析】这是一个简化的排序算法。基本思想就是:把三个数分别两两比较,若前者大于后者,则将两数互换。11【程序】#include int main(void)int a,b,c,t;printf

4、(请输入三个整数:n);scanf(%d%d%d,&a,&b,&c);if(ab)/交换a 和b 的内容,下同t=a;a=b;b=t;if(bc)t=b;b=c;c=t;if(ab)/注意,这里为什么又一次比较a 和b 呢?t=a;a=b;b=t;printf(排序后的结果是:a=%d,b=%d,c=%dn,a,b,c);return 0;123.ifelseif语句if(表达式1)语句1;else if(表达式2)语句2;else if(表达式3)语句3;else语句4;13 这种ifelseif语句在执行时,首先计算并测试表达式1的值,若为真,则执行语句1;否则,再计算并测试表达式2的值,

5、若为真,则执行语句2;否则,接着计算并测试表达式3的值,若为真,则执行表达式3;否则,当这3个表达式的值均不为真时,则执行语句4。144.1.2 if语句的嵌套 if语句的嵌套指的是在一个if语句中又包含一个或多个if语句。一般形式如下:if(表达式1)if(表达式2)语句1;else 语句2;elseif(表达式3)语句3;else 语句4;在if语句的嵌套结构中,要特别注意if和else的匹配关系。C语言规定:每一个else都与在同一分程序中的尚未匹配的最近的if匹配。15 if(表达式1)if(表达式2)语句1;else语句2;该if语句等价于:if(表达式1)if(表达式2)语句1;e

6、lse语句2;16 如果要让else与if(表达式1)匹配,则程序应该调整为:if(表达式1)if(表达式2)语句1;else语句2;17【例4.3】输入一个年份值,判断这一年是否为闰年。【分析】首先给出闰年的判别条件,即能够被4整除并且不能被100整除的年份是闰年,或者,能够被400整除的也是闰年。此程序的关键就是要准确描述出判别是否为闰年的表达式。18 算法如下。(1)给变量flag赋值为0。flag的值(或称为状态)起着决定动作的标志作用。在程序中恰当地使用状态变量(或标志变量)是程序设计的技巧之一。(2)输入一个年份值给变量year。(3)如果year能够被4整除并且不能被100整除或

7、者year能够被400整除,则令flag等于1。(4)如果flag等于1,则输出该年为闰年,否则就输出该年不是闰年。19【程序】#include int main(void)int year,flag=0;/flag 初始化为0printf(请输入一个年份:);scanf(%d,&year);if(year0)if(year%4=0&year%100!=0)|year%400=0)flag=1;if(flag=1)printf(%d 年是闰年n,year);elseprintf(%d 年不是闰年n,year);elseprintf(输入的年份不合理!n);return 0;204.1.3 条件

8、表达式 条件表达式是一种以条件运算符?:为运算符、以3个有不同类型要求的子表达式作为其运算分量的三目表达式(?:运算符也是C语言中唯一的三目运算符)。条件表达式的一般形式为:表达式1?表达式2:表达式321【说明】(1)条件表达式的执行顺序是,先计算并判断表达式1的值,若为真(非0),则求解表达式2并把表达式2的值作为整个条件表达式的值;若表达式1的值为假(等于0),则求解表达式3并把表达式3的值作为整个条件表达式的值。(2)注意条件运算符和其他运算符的优先级别高低的问题。比如:在t=xy?x:y中,由于条件运算符的优先级高于赋值运算符,因此要先进行条件运算再进行赋值运算,即相当于t=(xy?

9、x:mn?m:n相当于xy?x:(mn?m:n)。22(4)条件表达式语句可以用来代替简单的ifelse语句。例如,“t=xy?x:y;”可以用来代替“if(xy)t=x;elset=y;”。234.2 switch语句24 switch语句也叫开关语句,是一个多分支语句,用来实现多分支选择结构。switch语句的一般形式为:switch(表达式)case E1:语句块1;break;case E2:语句块2;break;default:默认语句块;break;语句块X;25switch语句流程图26【说明】(1)switch后面括号内的“表达式”必须是整数类型的表达式。(2)case后面紧跟

10、的E1、E2必须是整型常量或整型常量表达式,或是与整型兼容的表达式。C语言要求每一个case后的常量表达式必须互不相同。(3)switch语句执行时,先计算“表达式”的值,如果该值与某个case后紧跟的常量表达式的值相等,那么就从该case分支的语句开始往后执行。(4)如果所有的case后的常量表达式都与“表达式”的值不相同,则接着查找后面有无带default标号的分支,若有,则从default标号后面的语句往后执行,直至switch结构的结束。若无,则执行switch语句后面的语句块X。(5)如果在某个分支的执行过程中遇到break语句,则终止整个switch语句的执行。27(6)多个cas

11、e语句可以共用一组执行语句,如:switch(x)case A:case B:case C:printf(OKn);break;此例中,无论x的值为A,B或是C,都是执行同一个语句序列。28【例4.4】使用switch语句编程实现下面的功能:给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,大于或等于80分并且小于90分为B,大于或等于70分并且小于80分为C,大于或等于60分并且小于70分为D,60分以下为E。【分析】用变量x表示成绩,为了把x所属的成绩段和某个整数对应起来,需要先执行(int)x/10。29【程序】#include int main(void)floa

12、t x;int rank;printf(请输入一个成绩值:);scanf(%f,&x);switch(int)x/10)case 10:case 9:printf(成绩等级为An);break;case 8:printf(成绩等级为Bn);break;case 7:printf(成绩等级为Cn);break;case 6:printf(成绩等级为Dn);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(成绩等级为En);break;default:printf(输入的成绩不在0 到100 之间!n);break;return 0;30【说明】(1)变量x是实型,必须用(int)x强制转换为整型。(2)(int)x/10的目的是使0100的成绩变到010,以便switch判断处理。3132

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

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(第4章 选择结构程序设计.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|