ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:47.29KB ,
资源ID:8598092      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8598092.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言条件控制语句.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言条件控制语句.docx

1、C语言条件控制语句在程序的三种基本结构中,第二种即为选择结构,其基本特点是:程序的流程由多路分支组成,在程序的一次执行过程中,根据不同的情况,只有一条支路被选中执行,而其他分支上的语句被直接跳过。C语言中,提供if语句和switch语句选择结构,if语句用于两者选一的情况,而switch用于多分支选一的情形。3.3.1if语句1.if语句的两种基本形式首先,我们看一个例子,由此了解选择结构的意义及设计方法。例3-5输入三个数,找出并打印其最小数。分析:设三个数为A、B、C,由键盘读入,我们用一个变量MIN来标识最小数,A、B、C与MIN皆定义为int型变量。每次比较两个数,首先比较A和B,将小

2、的一个赋给MIN,再把第三个数C与MIN比较,再将小的一个赋给MIN,则最后MIN即为A、B、C中最小数。算法如下:1)输入A、B、C。2)将A与B中小的一个赋给MIN。3)将MIN与C中小的一个赋给MIN。4)输出MIN。将第2)步细化为:若AB,则MIN=A,否则:MIN=B;其流程图见图-1。第3)步细化为:若CMIN,则MIN=C;其流程图见图3-2。对应图3-1和图3-2,正是if语句的两种基本形式,与图3-2对应的if语句的格式为:if语句当表达式为真时,执行语句,表达式为假时跳过语句。与图3-1对应的if语句的格式为:if表达式语句1else语句2当表达式为真时,执行语句,表达式

3、为假时执行语句2。无论如何,语句与语句每次只能有一个被执行。要注意的是:if或if.else,包括后面要讲到的嵌套if,即if.elseif.被看成是一条语句,即使其中的语句是包含多条语句的复合语句,仍然如此。下面是例3-5的源程序:main()inta,b,c,min;printf(inputa,b,c:);scanf(%d%d%d,&a,&b,&c);if(ab)min=a;elsemin=b;if(c=y,只需顺序打出,否则,应将x,y中的数进行交换,然后输出。两数交换必须使用一个中间变量t,定义三个浮点数x、y、t。算法:1)读入x、y;2)大数存入x,小数存入y;3)输出x、y。第2

4、)步求精:若xy,则交换x与y;再求精,x与y交换;t=xx=yy=t算法的流程图见图3-3,程序如下:#includemain()floatx,y,t;printf(inputx,y:);scanf(%f%f,&x,&y);if(xy)t=x;x=y;y=t;printf(result:%7.3ft%7.3fn,x,y);执行结果:inputx,y:43.256.7result:56.70043.2003.if.elseif语句实际应用中常常面对更多的选择,这时,将if.else扩展一下,就得到if.elseif结构,其一般形式为:if语句elseif语句2elseif语句3else语句4对

5、应的流程图见图3-4。例3-7货物征税问题,价格在万元以上的征5%,5000元以上1万元以下的征3%,1000元以上5000以下的征2%,1000元以下的免税,读入货物价格,计算并输出税金。分析:读入price,计算tax,这是一个较复杂的分支结构程序设计(应注意避免重复征税)。假定货物的价格在1万元以上,征税应分段累计,各段采用不同税率进行征收。算法:若price=10000则tax=0.05*(price-10000);price=10000;否则,若price=5000则tax=0.03*(price-5000)+tax;price=5000;否则,若price=1000则tax=0.0

6、2*(price-1000)+tax;price=1000;程序如下:#includemain()floatprice,tax=0;printf(inputprice:);scanf(%f,&price);if(price=10000.0)tax=0.05*(price-10000)+tax;price=10000;if(price=5000.0)tax=0.03*(price-5000)+tax;price=5000;if(price=1000.00)tax=0.02*(price-1000)+tax;printf(thetax=%10.3f,tax);运行程序:RUN15000thetax

7、=480.0004.if语句嵌套在一个if语句中可以又出现另一个if语句,这称为if语句的嵌套或多重if语句:ifif.else语句2;例3-8计算函数1x0y=0x=0-1x=0)if(x0)y=1;elsey=0;elsey=-1;printf(y=%4.0fn,y);对多重if,最容易犯的错误是if与else配对错误,例如,写成如下形式:y=0;if(x=0)if(x0)y=1;elsey=-1;从缩排上可以看出,作者希望else是与ifx=0配对,但是C语言规定else总是与离它最近的上一个if配对,结果,上述算法的流程图变成图3-6,完全违背了设计者的初衷。改进的办法是使用复合语句,

8、将上述程序段改写如下:y=0;if(x=0)if(x0)y=1;elsey=-1;3.3.2switch语句if语句只能处理从两者间选择之一,当要实现几种可能之一时,就要用if.elseif甚至多重的嵌套if来实现,当分支较多时,程序变得复杂冗长,可读性降低。C语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁。switch语句的一般格式为:switchcase常量表达式:语句序列;break;case常量表达式:语句序列;break;case常量表达式n:语句n;break;default:语句n+1;其中常量表达式的值必须是整型,字符型或者枚举类型,各语句序列允许有多条语

9、句,不需要按复合语句处理,若语句序列i为空,则对应的break语句可去掉。图3-7是switch语句的流程图。特殊情况下,如果switch表达式的多个值都需要执行相同的语句,可以采用下面的格式: switch(i)case1:case2:case3:语句1;break;case4:case5:语句2;break;default:语句3;当整型变量i的值为1、2或3时,执行语句1,当i的值为4或5时,执行语句2,否则,执行语句3。例3-9输入月份,打印1999年该月有几天。程序如下:#includemain()int month;int day;printf(please input the m

10、onth number:);scanf(%d,&month);switch(month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;case 4:case 6:case 9:case 11:day=30;break;case 2:day=28;break;default:day=-1;if day=-1printf(Invalid month input !n);elseprintf(1999.%dhas%ddaysn,month,day);3.3.3程序应用举例例3-10解一元二次方程ax2+bx+c=0,a

11、、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语句完成。程序如下:#include#includemain()float a,b,c,s,x1,x2;doublet;printf(please input a,b,c:);scanf(%f%f%f,&a,&b,&c);if(a=0.0)if(b!=0.0)printf(the root is:%fn,-c/b);elseif(c=

12、0.0)printf(x is inexactiven);elseprintf(no root !n);elses=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:%fand%f,xn1,x2);elseprintf(There are two equal roots:%fn,-0.5*b/a);elset=sqrt(-s);x1=-0.5*b/a;/*实部*/x2=abs(0.5*t/a);/*虚部的绝对值*/printf(There are two virtual roots:);printf(%f+i%ftt%f-i%fn,x1,x2,x1,x2);运行结果如下:RUNplease input a,b,c:123There are two virtual roots:-1.000000+i1.000000-1.000000-i1.000000RNUpleaseinputa,b,c:253There are two different roots:-1.500000and-1.000000RNUplease input a,b,c:003No root!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1