收藏 分销(赏)

c语言分支语句精.pptx

上传人:胜**** 文档编号:1662874 上传时间:2024-05-07 格式:PPTX 页数:39 大小:554.31KB 下载积分:10 金币
下载 相关 举报
c语言分支语句精.pptx_第1页
第1页 / 共39页
c语言分支语句精.pptx_第2页
第2页 / 共39页


点击查看更多>>
资源描述
C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:501/39第四章第四章 分支语句分支语句 4.1 if 结构结构 4.2 Switch语句语句 4.3 程序范例程序范例 C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:502/39 4.1 if 结构结构 顺序结构顺序结构的程序只能以顺序的方式处理数据的程序只能以顺序的方式处理数据,但实,但实际问题要求计算机能够对问题进行判断,根据判断的结果,际问题要求计算机能够对问题进行判断,根据判断的结果,选择不同的处理方式,这就要求程序本身具有判断和选择选择不同的处理方式,这就要求程序本身具有判断和选择能力,能力,分支结构分支结构正是为解决这类问题而设定的。正是为解决这类问题而设定的。C语言用于实现分支有语言用于实现分支有if结构结构和和switch结构结构。4.1.1 if语句语句if结构是一种常用的分支结构,是最简单的一种单分支结构是一种常用的分支结构,是最简单的一种单分支结构结构 。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:503/39一般形式为:一般形式为:if():一般为条件表达式或逻一般为条件表达式或逻辑表达式。辑表达式。功功能能:先先判判断断的的逻逻辑辑值值,若若该该逻逻辑辑值值为为“真真”,则则执执行行,否则,什么也不执行。,否则,什么也不执行。注注意意:if语语句句中中的的一一般般情情况况下下都都是是以以复复合合语语句句的的形形式式出出现现,即即用一对花括号将语句括起来。用一对花括号将语句括起来。if结构的流程图结构的流程图:C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:504/39【例【例4-1】从键盘任意输入两个实数,然后按其代数从键盘任意输入两个实数,然后按其代数值从小到大输出这两个数。值从小到大输出这两个数。先制定算法的流程图,如先制定算法的流程图,如图所示,虚线框为图所示,虚线框为if结构。结构。根据流程图可以很方便地根据流程图可以很方便地写出解决这个问题的程序写出解决这个问题的程序 C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:505/39/*exam4_1.c 按升序输出两个数按升序输出两个数*/#include main()float a,b,t;scanf(%f,%f,&a,&b);if(ab)t=a;a=b;b=t;printf(%5.2f,%5.2fn,a,b);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:506/39【例【例4-2】:从键盘输入一个整数,求该数的】:从键盘输入一个整数,求该数的绝对值。绝对值。该问题算法该问题算法的流程图的流程图:C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:507/39根据流程图写出的程序如下:根据流程图写出的程序如下:/*exam4_2.c 求整数的绝对值求整数的绝对值*/#include main()int num;scanf(%d,&num);if(num0)num=-num;printf(The absolute value i s:%dn,num);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:508/39 4.1.2 if_else语句语句 if_else语句是一种双分支结构,其一般形式为:语句是一种双分支结构,其一般形式为:if()else :一般为条件表达式或逻辑表达式。:一般为条件表达式或逻辑表达式。功能是:先判断功能是:先判断的值,若其值为的值,若其值为“真真”,则执,则执行行,否则执行,否则执行。if_else结构的流程图结构的流程图:C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:509/39【例【例4-3】设计一个猜数游戏,由计算机产生一个随机设计一个猜数游戏,由计算机产生一个随机数数magic,从键盘输入一个数从键盘输入一个数guess,若输入的数,若输入的数guess的的大小等于随机数大小等于随机数magic,则输出,则输出“You are right!”。否则,。否则,输出输出“You are wrong!”。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5010/39根据流程图可写出程序如下:根据流程图可写出程序如下:/*exam4_3.c 猜数游戏的程序猜数游戏的程序*/#include#include main()int guess,magic;magic=rand();scanf(%d,&guess);if(guess=magic)printf(You Are Right);else printf(You Are Wrong);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5011/39 4.1.3 if语句的嵌套语句的嵌套 if语句的嵌套语句的嵌套:是指在:是指在if或或else的分支下又可以包含另一个的分支下又可以包含另一个if语句或语句或if_else语句,嵌套的形式有语句,嵌套的形式有规则嵌套规则嵌套和和任意嵌套任意嵌套两两种。种。if语句的规则嵌套形式如下:语句的规则嵌套形式如下:if()else if()else if()else if()else C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5012/39 if_else的规则嵌套流程图的规则嵌套流程图 C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5013/39【例【例4-4】从键盘输入从键盘输入+、-、*、/中的任一个,输出对中的任一个,输出对应的英文单词:应的英文单词:plus、minus、mutiply、divide,若输,若输入的不是这四个字符中的任一个,则输出入的不是这四个字符中的任一个,则输出“error”。算法的流程图如图所示,虚线框所示为算法的流程图如图所示,虚线框所示为if_else的规则嵌套:的规则嵌套:C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5014/39#includemain()char ch;ch=getchar();if(ch=+)printf(plusn);else if(ch=-)printf(minusn);else if(ch=*)printf(multiplyn);else if(ch=/)printf(dividen);else printf(errorn);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5015/39注意:注意:if与与else的匹配关系,的匹配关系,else总是与离它最近的上一总是与离它最近的上一个个if配对。将每一对配对。将每一对if_else 结构采用结构采用缩进对齐方式缩进对齐方式,可,可以增加程序的可读性,良好的程序书写风格有助于对以增加程序的可读性,良好的程序书写风格有助于对程序的理解。程序的理解。【例【例4-5】计算阶跃函数计算阶跃函数y的值:的值:C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5016/39算法的流程图如图,两个虚线框均为算法的流程图如图,两个虚线框均为if_else结构。结构。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5017/39根据流程图写出的程序如下:根据流程图写出的程序如下:/*exam4_5.c 计算阶跃函数计算阶跃函数y的值的值*/#includemain()float x,y;printf(input x:n);scanf(%f,&x);if(x=0)if(x0)y=1;elsey=0;elsey=-1;printf(y=%-4.0fn,y);对多重对多重if,最容易犯的,最容易犯的错误是错误是if与与else配对错误,配对错误,else总是与离它最近的总是与离它最近的上一个上一个if配对。配对。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5018/39 4.2 Switch结构结构 当嵌套当嵌套if分支较多时,程序变得复杂冗长,可读性降低。分支较多时,程序变得复杂冗长,可读性降低。C语言提供了语言提供了switch开关语句专门处理多路分支的情形,开关语句专门处理多路分支的情形,使程序变得简洁。使程序变得简洁。4.2.1 switch语句语句 switch语句的语句的一般形式一般形式为:为:switch()case:语句序列:语句序列1;case:语句序列:语句序列2;case:语句序列:语句序列n;default:语句序列语句序列(n+1);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5019/39常量表达式常量表达式:值必须是整型、字符型或者枚举类型值必须是整型、字符型或者枚举类型语句序列语句序列:允许有多条语句允许有多条语句:可以为任何表达式可以为任何表达式功能:功能:先计算先计算的值,再从上到下地判断与哪一个的值,再从上到下地判断与哪一个的值相等,如果的值相等,如果的值等于的值等于的值,则从语句序列的值,则从语句序列i开始执行,直到语句序列开始执行,直到语句序列(n+1)为止;若为止;若的值不等于任何一个的值不等于任何一个的值,是执行的值,是执行default后面的语句序列后面的语句序列(n+1)。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5020/39 switch语句语句一般形式一般形式的流程图的流程图:?C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5021/39【例【例4-6】根据下面表所示的天气情况,决】根据下面表所示的天气情况,决定活动的场所。定活动的场所。分别用整数分别用整数0、1、2和和3代表下雨、下雪、晴天和有风代表下雨、下雪、晴天和有风无雨天气。采用无雨天气。采用switch语句的一般形式语句的一般形式.C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5022/39例例46 switch语句一般形式的流程图语句一般形式的流程图 C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5023/39根据图所示的流程图写出的程序如下所示:根据图所示的流程图写出的程序如下所示:/*exam4_6.c 根据天气情况决定活动场所根据天气情况决定活动场所*/#include main()int weather;scanf(%d,&weather);switch(weather)case 0:printf(rain-at palaestran);case 1:printf(snow-at playgroundn);case 2:printf(fine-at hilln);case 3:printf(wind-to outskirtn);default:printf(other-at homen);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5024/39程序运行结果程序运行结果:输入输入:2输出输出:fine-at hill wind-to outskirt other-at home 发现发现,如果输入的天气值为如果输入的天气值为0,即天气情况为下雨即天气情况为下雨,则活动场所为所有地方则活动场所为所有地方,显然这是与题意不相符合的显然这是与题意不相符合的,程序是错误的。程序是错误的。解决这个问题必须要用到分支语句:解决这个问题必须要用到分支语句:break。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5025/394.2.2 break语句在语句在switch语句中的作用语句中的作用 如果是一个条件对应着一组独立的操作,那么在如果是一个条件对应着一组独立的操作,那么在switch语句的一般形式中,每一个语句的一般形式中,每一个完成后都要加上完成后都要加上一条分支语句:一条分支语句:break;switch条件分支条件分支互相独立互相独立的形式:的形式:switch ()case:;break;case:;break;case:;break;case:;break;default:;C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5026/39Switch结构实现了完全地独立分支,结构实现了完全地独立分支,功能:功能:先计算先计算的值,再从上到下地判断与哪一个的值,再从上到下地判断与哪一个的值相等,如果的值相等,如果的值等于的值等于i的的值,则执行值,则执行i,执行完后,跳出,执行完后,跳出switch结构,执行结构,执行switch结构外的下一条语句结构外的下一条语句.C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5027/39【例例4-7】将例将例46改写成具有独立分支的改写成具有独立分支的switch结构。结构。#include main()int weather;scanf(%d,&weather);switch(weather)case 0:printf(rain-at palaestran);break;case 1:printf(snow-at playgroundn);break;case 2:printf(fine-at hilln);break;case 3:printf(wind-to outskirtn);break;default:printf(other-at homen);程序运行时,任何一种天气程序运行时,任何一种天气情况都只会对应出现一种运情况都只会对应出现一种运动场所动场所.C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5028/39【例例4-8】从键盘输入一个字符,判断其是否为从键盘输入一个字符,判断其是否为a(可(可代表代表abort)或)或r(可代表(可代表retry)或)或f(可代表可代表fail),并,并输出相应信息。(输入时不区分大小写)。输出相应信息。(输入时不区分大小写)。采用采用switch 结构,其算法流程图如图结构,其算法流程图如图:C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5029/39/*exam4_8.c 字符输入判断字符输入判断*/#include main()char ch;printf(Abort,Retry,Fail?n);ch=getchar();switch(ch)case a:case A:printf(nAbortn);break;case r:case R:printf(nRetryn);break;case f:case F:printf(nFailn);break;default:printf(nerrorn);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5030/39 4.3 程序范例程序范例【例例4-9】求解任意的一元二次方程求解任意的一元二次方程ax2+bx+c=0的根,的根,a、b、c的值由键盘输入。的值由键盘输入。分析:对系数分析:对系数a、b、c考虑以下情形考虑以下情形1)a=0:b0,则,则x=-c/b;b=0,则:若,则:若 c=0,则则x无定根;无定根;若若c0,则,则x无解。无解。2)a0;b2-4ac0,有两个不等的实根;,有两个不等的实根;b2-4ac=0,有两个相等的实根;,有两个相等的实根;b2-4ac0,有两个共轭复根。,有两个共轭复根。采用嵌套的采用嵌套的if结构,结构,考虑算法流程图考虑算法流程图?C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5031/39C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5032/39/*exam4_9.c 求一元二次方程的根求一元二次方程的根*/#include#include main()float a,b,c,s,x1,x2;double t;printf(please input a,b,c:n);scanf(%f%f%f,&a,&b,&c);if(a=0.0)if(b!=0.0)printf(the root is:%5.2fn,-c/b);else if(c=0.0)printf(x is inexactiven);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5033/39 else printf(no root!n);else s=b*b-4*a*c;if(s=0.0)if(s0.0)t=sqrt(s);x1=-0.5*(b+t)/a;x2=-0.5*(b-t)/a;printf(There are two different roots:n%5.2f and%5.2fn,x1,x2);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5034/39elseprintf(There are two equal roots:n%5.2fn,-0.5*b/a);else t=sqrt(-s);x1=-0.5*b/a;x2=abs(0.5*t/a);printf(There are two virtual roots:n);printf(%5.2f+%5.2fitt%5.2f-%5.2fin,x1,x2,x1,x2);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5035/39【例例4-10】运输费用的计算问题。距离】运输费用的计算问题。距离S越远,每公里的越远,每公里的运费越低。设每公里每吨货物的基本运费为运费越低。设每公里每吨货物的基本运费为P,货物重,货物重量为量为W(吨),距离为(吨),距离为S,折扣为,折扣为d,则总运输费用,则总运输费用f的的计算公式为:计算公式为:f=P*W*S*(1-d)。其中折扣数。其中折扣数d与距离有关,与距离有关,具体标准如下:具体标准如下:0S250km 没有折扣没有折扣 250 S500 折扣折扣2500 S1000 折扣折扣5 1000 S2000 折扣折扣82000 S3000 折扣折扣10 3000 S 折扣折扣15 分析:折扣点的变化处都发生在距离为分析:折扣点的变化处都发生在距离为250的倍数上,如的倍数上,如表所示。表所示。C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5036/39流程图简流程图简图如左图图如左图 C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5037/39/*exam4_10.c 运输费用的计算运输费用的计算*/#include main()int c,s;float p,w,d,f;printf(please input p,w,s:n);scanf(%f,%f,%d,&p,&w,&s);if(s=3000)c=12;elsec=s/250;switch(c)C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5038/39case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*(1-d/100);printf(Total freight is:%10.2fn,f);C C 程序设计基础教程程序设计基础教程第四章第四章 分支语分支语句句10:5039/39小结:小结:本章主要介绍了程序分支结构的几种形式,它包括有本章主要介绍了程序分支结构的几种形式,它包括有if语句,语句,if_else语句,语句,if嵌套语句和嵌套语句和switch语句语句。共同特点是:先进行条件判断,再根据判断结果决定下共同特点是:先进行条件判断,再根据判断结果决定下一步做什么。一步做什么。switch是一种是一种“多路开关多路开关”语句,用它可更好地完成语句,用它可更好地完成多路选择任务,只是在使用中应注意多路选择任务,只是在使用中应注意break语句的正确语句的正确使用,以使程序能正常地从使用,以使程序能正常地从switch分支中跳出。分支中跳出。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服