C语言程序设计教程第4章选择结构程序设计.ppt

上传人:wuy****n92 文档编号:80466166 上传时间:2023-03-23 格式:PPT 页数:32 大小:268.99KB
返回 下载 相关 举报
C语言程序设计教程第4章选择结构程序设计.ppt_第1页
第1页 / 共32页
C语言程序设计教程第4章选择结构程序设计.ppt_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《C语言程序设计教程第4章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计教程第4章选择结构程序设计.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第4 4章章 选择结构程序设计选择结构程序设计 北京科技大学北京科技大学 计算机系计算机系C C 语言程序设计语言程序设计1本章主要内容本章主要内容4.1 if语句语句4.1.1 if语句的一般形式语句的一般形式4.1.2 if语句的嵌套语句的嵌套4.2 switch语句语句4.2.1 switch语句的一般形式语句的一般形式4.2.2 break语句语句4.3 选择结构程序设计举例选择结构程序设计举例2简单分支语句简单分支语句l l语句一般格式语句一般格式 if(表达式表达式)语句语句l l功能:功能:计算表达式的值,如果是一个非计算表达式的值,如果是一个非计算表达式的值,如果是一个非计算

2、表达式的值,如果是一个非0 0值(即值(即值(即值(即逻辑真),就执行内嵌语句,否则(即逻逻辑真),就执行内嵌语句,否则(即逻逻辑真),就执行内嵌语句,否则(即逻逻辑真),就执行内嵌语句,否则(即逻辑假)跳过内嵌语句,顺序执行后续语句。辑假)跳过内嵌语句,顺序执行后续语句。辑假)跳过内嵌语句,顺序执行后续语句。辑假)跳过内嵌语句,顺序执行后续语句。内嵌语句,可为:内嵌语句,可为:赋值语句赋值语句函数调用语句函数调用语句控制语句控制语句复合语句复合语句空语句空语句可为算术、关系、逻辑、赋值可为算术、关系、逻辑、赋值等表达式等表达式3简单分支语句的算法:简单分支语句的算法:l l例如:例如:if(

3、x0)m+;if(ab)c=a;a=b;b=c;表达式非表达式非0 T F 语句语句N-S结构图结构图语句语句流程图流程图NY表达式非表达式非0?4双重分支语句双重分支语句 l l语句一般格式语句一般格式if(表达式表达式)语句语句1 else 语句语句2 l l功能:功能:计算表达式的值,如果它的值是一个非计算表达式的值,如果它的值是一个非计算表达式的值,如果它的值是一个非计算表达式的值,如果它的值是一个非0 0值值值值(逻辑真),就执行内嵌语句(逻辑真),就执行内嵌语句(逻辑真),就执行内嵌语句(逻辑真),就执行内嵌语句1 1,之后跳过内,之后跳过内,之后跳过内,之后跳过内嵌语句嵌语句嵌语

4、句嵌语句2 2,执行后续语句;否则跳过内嵌语句,执行后续语句;否则跳过内嵌语句,执行后续语句;否则跳过内嵌语句,执行后续语句;否则跳过内嵌语句1 1,执行内嵌语句,执行内嵌语句,执行内嵌语句,执行内嵌语句2 2,之后执行后续语句。,之后执行后续语句。,之后执行后续语句。,之后执行后续语句。5双重分支语句的算法:双重分支语句的算法:l l例如:例如:if if(x0)m+;(x0)m+;elseelse m-;m-;if if(ch=a&ch=a&ch=z)ch=ch-32;ch=ch-32;printf(%cn,ch);printf(%cn,ch);else else printf(%cn,c

5、h);printf(%cn,ch);表达式非表达式非0 T F 语句语句1 语句语句2N-S结构图结构图 语句语句1 语句语句2流程图流程图NY表达式非表达式非0?6多重分支语句多重分支语句 l l语句一般格式语句一般格式if(表达式表达式1)语句语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式m)语句语句m else 语句语句 nl l功能:功能:依次计算并判断表达式依次计算并判断表达式依次计算并判断表达式依次计算并判断表达式i i,为非为非为非为非0 0时执行后面的时执行后面的时执行后面的时执行后面的语句,都为语句,都为语句,都为语句,都为0 0时,执行语句

6、时,执行语句时,执行语句时,执行语句n n 无论执行完那个语句分支,都转到后续语句无论执行完那个语句分支,都转到后续语句无论执行完那个语句分支,都转到后续语句无论执行完那个语句分支,都转到后续语句7多重分支语句的算法多重分支语句的算法l l流程图流程图表达式表达式表达式表达式2?2?表达式表达式表达式表达式1?1?语句语句语句语句n n 语句语句语句语句1 1 语句语句语句语句2 2 语句语句语句语句mmY YN NY YN NN NY Y表达式表达式表达式表达式m?m?8多重分支语句的算法多重分支语句的算法l lN-S结构图结构图 表达式表达式表达式表达式1 1?T FT F 表达式表达式表

7、达式表达式2 2?语句语句语句语句1 1 T FT F 语句语句语句语句2 2 表达式表达式表达式表达式mm?T F T F 语句语句语句语句m m 语句语句语句语句n nl l例如:例如:if if(a0)x=-1;(a=A&=A&chch=Z=65&=65&chch=90=A&ch=A&ch=Z?ch+32:ch);putchar(n)114.1.2 if语句的嵌套语句的嵌套l l如果如果if的内嵌语句中又使用了一个的内嵌语句中又使用了一个if语句,语句,则构成则构成if语句的嵌套。语句的嵌套。【例【例4.a】比较两个整数的关系。比较两个整数的关系。#include main()int x

8、,y;printf(Enter integer X and Y:);scanf(%d%d,&x,&y);if(x!=y)if(x y)printf(XYn);else printf(XYn);else printf(X=Yn);应该正确判断:应该正确判断:应该正确判断:应该正确判断:if if的的的的内嵌语句内嵌语句内嵌语句内嵌语句if if和和和和elseelse的配对的配对的配对的配对运行运行jc4_a提倡缩格书写提倡缩格书写提倡缩格书写提倡缩格书写有利于阅读程序有利于阅读程序12 if语句嵌套的形式语句嵌套的形式l l简单简单if语句的嵌套形式语句的嵌套形式 if(表达式表达式)if 语

9、句语句l l双重(或多重)分支双重(或多重)分支if语句的嵌套形式语句的嵌套形式 if(表达式表达式)if 语句语句 else if 语句语句 可以是各种形式的可以是各种形式的if语句语句可以是各种形式的可以是各种形式的if语句语句如果是简单如果是简单if语句,语句,必须用必须用“”括起括起13例如:例如:if(c=50)printf(50=c=100n);if(c=50)printf(50=c=100n);else printf(c50n);else if(c=150)printf(100c150n);if(c=50)printf(50=c=100n);else printf(cb)if(a

10、c)if(ad)m=1;else m=2;else m=3;问题:哪一个问题:哪一个 else 和哪一个和哪一个 if 相匹配相匹配?规则:在规则:在嵌套的嵌套的ifelse语句语句中,中,else总是与总是与上面的离它最近的尚未配对的上面的离它最近的尚未配对的if 配对。配对。15举例举例【例【例4.4】输入一个数,判断它是奇数还是】输入一个数,判断它是奇数还是偶数,如果是奇数则进一步判断偶数,如果是奇数则进一步判断它是否为它是否为5的倍数。的倍数。定义变量定义变量x输入输入x的值的值 x是奇数是奇数 T F 输出输出“odd”x是是5的的倍倍数数 输输出出“even”T F是是5的倍数的倍

11、数16程序:程序:main()main()int x;int x;scanf(%d,&x);scanf(%d,&x);if if(x%2!=0 x%2!=0)printf(%d is an odd n,x);printf(%d is an odd n,x);if if(x%5=0 x%5=0)printf(%d is the times of 5 n,x);printf(%d is the times of 5 n,x);else else printf(%d is an even n,x);printf(%d is an even n,x);运行运行jc4_4思考:如果没有,算法和输出如何?

12、思考:如果没有,算法和输出如何?17学习学习if语句的难点语句的难点l lif else 语句的配对语句的配对l l正确用表达式描述条件正确用表达式描述条件例如:当例如:当x大于大于5小于小于10时令时令x自增自增 if(5x10 )x+;l l正确判断内嵌语句正确判断内嵌语句例如:例如:if(x5&x 0d 0时,方程有时,方程有时,方程有时,方程有两个不相等的实根两个不相等的实根两个不相等的实根两个不相等的实根:x1=(x1=(-b+b+sqrtsqrt(d)/(2*a)(d)/(2*a)x2=(x2=(-b-b-sqrtsqrt(d)/(2*a)(d)/(2*a)当当当当d 0d 0 d

13、 0 计算重根计算重根计算重根计算重根 T FT F 输出重根输出重根输出重根输出重根 计算实根计算实根计算实根计算实根 计算虚根计算虚根计算虚根计算虚根 输出实根输出实根输出实根输出实根 输出虚根输出虚根输出虚根输出虚根27程序:程序:#include math.hmain()float a,b,c,d,x1,x2,lp,ip;scanf(%f%f%f,&a,&b,&c);printf(the equation);if(fabs(a)1e-6)printf(is not quadratic);else d=b*b-4*a*c;if(fabs(d)1e-6)else if(d1e-6)/*/*

14、不相等的实根不相等的实根不相等的实根不相等的实根 */*/x1=(-b+sqrt(d)/(2*a);x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(has two real roots:n);printf(has two real roots:n);printf(x1=%8.4f,x2=%8.4fn,x1,x2);printf(x1=%8.4f,x2=%8.4fn,x1,x2);elseelse /*/*虚根虚根虚根虚根 */*/lp=-b/(2*a);ip=sqrt(-d)/(2*a);lp=-b/(

15、2*a);ip=sqrt(-d)/(2*a);printf(has two complex roots:n);printf(has two complex roots:n);printf(x1=%8.4f+%8.4fin,lp,ip);printf(x1=%8.4f+%8.4fin,lp,ip);printf(x2=%8.4f-%8.4fin,lp,ip);printf(x2=%8.4f-%8.4fin,lp,ip);运行运行jc4_629举例(续):举例(续):【例【例4.b】输入年份,判别该年是否为闰年。输入年份,判别该年是否为闰年。思路:思路:思路:思路:年份年份年份年份yearyear

16、为闰年的条件为为闰年的条件为为闰年的条件为为闰年的条件为 能够被能够被能够被能够被4 4整除,但不能被整除,但不能被整除,但不能被整除,但不能被100100整除的年份;整除的年份;整除的年份;整除的年份;能够被能够被能够被能够被400400整除的年份。整除的年份。整除的年份。整除的年份。只要满足任意一个就可以确定它是闰年。只要满足任意一个就可以确定它是闰年。只要满足任意一个就可以确定它是闰年。只要满足任意一个就可以确定它是闰年。例如:例如:例如:例如:19961996年、年、年、年、20002000年是闰年年是闰年年是闰年年是闰年19981998年、年、年、年、19001900年不是闰年年不是

17、闰年年不是闰年年不是闰年设定标志变量设定标志变量leapleap,只要符合其中一个条件的就是只要符合其中一个条件的就是闰年,令闰年,令 leap=1leap=1;否则令否则令 leap=0leap=0 30算法:算法:定义变量定义变量year、leap 输入年份输入年份year 能被能被能被能被4 4整除且整除且整除且整除且 不能被不能被不能被不能被100100整除?整除?整除?整除?T F 能被能被能被能被400400整除?整除?整除?整除?leap=1 T F leap=1 leap=0 leap=1?T F 是闰年是闰年 不是闰年不是闰年year%400=0year%400=0year%

18、4=0&year%4=0&year%100!=0year%100!=031程序:程序:main()main()int year,leap;int year,leap;scanf(%d,&year);scanf(%d,&year);if(year%4=0&year%100!=0)if(year%4=0&year%100!=0)leap=1;leap=1;else if(year%400=0)else if(year%400=0)leap=1;leap=1;else leap=0;else leap=0;if(leap=1)if(leap=1)printf(%d is a leap year n,year);printf(%d is a leap year n,year);else else printf(%d is not a leap year n,year);printf(%d is not a leap year n,year);运行运行jc4_b32

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

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁