C语言条件控制语句Word格式.docx
- 文档编号:21734309
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:9
- 大小:47.29KB
C语言条件控制语句Word格式.docx
《C语言条件控制语句Word格式.docx》由会员分享,可在线阅读,更多相关《C语言条件控制语句Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
对应图3-1和图3-2,正是if语句的两种基本形式,与图3-2对应的if语句的格式为:
if<
表达式>
语句
当表达式为真时,执行语句,表达式为假时跳过语句。
与图3-1对应的if语句的格式为:
if〈表达式〉
语句1
else
语句2
当表达式为真时,执行语句1,表达式为假时执行语句2。
无论如何,语句1与语句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(a<
b)
min=a;
min=b;
if(c<
min)
min=c;
Theresultis%d\n"
min);
}
执行情况如下:
RUN
352
Theresultis:
2
这里顺便提一下程序书写的缩排问题,所谓缩排,就是下一行与上一行相比,行首向右缩进若字符,如上例的min=a、min=b等。
适当的缩排能使程序的结构、层次清晰、一目了然,增加程序的易读性。
应该从一开始就养成一个比较好的书写习惯,包括必要的注释、适当的空行以及缩排。
2.复合语句
if语句中,有时需要执行的语句不止一条,这就要用到复合语句。
复合语句,就是用一对花括号括起来的一条或多条语句,形式如下:
语句1;
语句2;
.......
语句n;
无论包括多少条语句,复合语句从逻辑上讲,被看成是一条语句。
复合语句在分支结构、循环结构中,使用十分广泛。
[例3-6]读入两个数x、y,将大数存入x,小数存入y。
x、y从键盘读入,若x>
=y,只需顺序打出,否则,应将x,y中的数进行交换,然后输出。
两数交换必须使用一个中间变量t,定义三个浮点数x、y、t。
算法:
1)读入x、y;
2)大数存入x,小数存入y;
3)输出x、y。
第2)步求精:
若x<
y,则交换x与y;
再求精,x与y交换;
①t<
==x
②x<
==y
③y<
==t
算法的流程图见图3-3,程序如下:
#include<
stdio.h>
floatx,y,t;
inputx,y:
%f%f"
x,&
y);
if(x<
y)
t=x;
x=y;
y=t;
result:
%7.3f\t%7.3f\n"
x,y);
执行结果:
43.256.7
56.70043.200
3.if...elseif语句
实际应用中常常面对更多的选择,这时,将if...else扩展一下,就得到if...elseif结构,其一般形式为:
表达式1>
语句1
elseif<
表达式2>
表达式3>
语句3
else语句4
对应的流程图见图3-4。
[例3-7]货物征税问题,价格在1万元以上的征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;
=1000
则tax=0.02*(price-1000)+tax;
price=1000;
程序如下:
floatprice,tax=0;
inputprice:
%f"
price);
if(price>
=10000.0)
tax=0.05*(price-10000)+tax;
=5000.0)
tax=0.03*(price-5000)+tax;
=1000.00)
tax=0.02*(price-1000)+tax;
thetax=%10.3f"
tax);
运行程序:
RUN¿
15000¿
thetax=480.000
4.if语句嵌套
在一个if语句中可以又出现另一个if语句,这称为if语句的嵌套或多重if语句:
表达式11>
......
[例3-8]计算函数
1x>
y=0x=0
-1x<
流程图见图3-5。
源程序如下:
floatx,y;
x);
if(x>
=0)
0)
y=1;
y=0;
y=-1;
y=%4.0f\n"
y);
对多重if,最容易犯的错误是if与else配对错误,
例如,写成如下形式:
从缩排上可以看出,作者希望else是与ifx>
=0配对,但是C语言规定else总是与离它最近
的上一个if配对,结果,上述算法的流程图变成图3-6,完全违背了设计者的初衷。
改进的办法是使用复合语句,将上述程序段改写如下:
3.3.2switch语句
if语句只能处理从两者间选择之一,当要实现几种可能之一时,就要用if...elseif甚至多重的嵌套if来实现,当分支较多时,程序变得复杂冗长,可读性降低。
C语言提供了switch开关语句专门处理多路分支的情形,使程序变得简洁。
switch语句的一般格式为:
switch<
case常量表达式1:
语句序列1;
break;
case常量表达式2:
语句序列2;
⋯⋯
case常量表达式n:
语句n;
default:
语句n+1;
其中常量表达式的值必须是整型,字符型或者枚举类型,各语句序列允许有多条语句,不需要按复合语句处理,若语句序列i为空,则对应的break语句可去掉。
图3-7是switch语句的流程图。
特殊情况下,如果switch表达式的多个值都需要执行相同的语句,可以采用下面的格式:
switch(i)
case1:
case2:
case3:
case4:
case5:
语句3;
当整型变量i的值为1、2或3时,执行语句1,当i的值为4或5时,执行语句2,否则,执行
语句3。
[例3-9]输入月份,打印1999年该月有几天。
intmonth;
intday;
pleaseinputthemonthnumber:
%d"
month);
switch(month)
case1:
case3:
case5:
case7:
case8:
case10:
case12:
day=31;
case4:
case6:
case9:
case11:
day=30;
case2:
day=28;
day=-1;
ifday=-1
Invalidmonthinput!
\n"
1999.%dhas%ddays\n"
month,day);
3.3.3程序应用举例
[例3-10]解一元二次方程ax2+bx+c=0,a、b、c由键盘输入。
对系数a、b、c考虑以下情形
1)若a=0:
①b<
>
0,则x=-c/b;
②b=0,则:
①c=0,则x无定根;
②c<
0,则x无解。
2)若a<
0;
①b2-4ac>
0,有两个不等的实根;
②b2-4ac=0,有两个相等的实根;
③b2-4ac<
0,有两个共轭复根。
用嵌套的if语句完成。
math.h>
floata,b,c,s,x1,x2;
doublet;
pleaseinputa,b,c:
%f%f%f"
if(a==0.0)
if(b!
=0.0)
therootis:
%f\n"
-c/b);
elseif(c==0.0)
xisinexactive\n"
noroot!
s=b*b-4*a*c;
if(s>
0.0)
t=sqrt(s);
x1=-0.5*(b+t)/a;
x2=-0.5*(b-t)/a;
Therearetwodifferentroots:
%fand%f,\xn1"
x2);
Therearetwoequalroots:
-0.5*b/a);
t=sqrt(-s);
x1=-0.5*b/a;
/*实部*/
x2=abs(0.5*t/a);
/*虚部的绝对值*/
Therearetwovirtualroots:
%f+i%f\t\t%f-i%f\n"
x1,x2,x1,x2);
运行结果如下:
123
-1.000000+i1.000000-1.000000-i1.000000
RNU
pleaseinputa,b,c:
253
-1.500000and-1.000000
003¿
Noroot!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 条件 控制 语句
![提示](https://static.bdocx.com/images/bang_tan.gif)