c语言基础教程第四章语句免费版.docx
《c语言基础教程第四章语句免费版.docx》由会员分享,可在线阅读,更多相关《c语言基础教程第四章语句免费版.docx(28页珍藏版)》请在冰豆网上搜索。
c语言基础教程第四章语句免费版
完全免费版
第四章 语句
4.1.1表达式语句
表达式语句是指任何一种表达式末尾加上分号〔;)所组成的语句。
在C语言程序中,表达式语句出现得最多,因此,有人说C语言是表达式语言。
表达式语句与表达式之间虽然只差一个分号(;),但二者是截然不同的。
在程序中,有的地方需要用表达式,则不能写成表达式语句。
例如,在if语句或循环语句的条件中,要求用表达式作为条件,如果写成表达式语句(即末尾加了分号),则是错误的。
同样,在要求用表达式语句的地方,写成表达式(即少写一个分号),也是错误的。
所以,读者一定要搞清楚何时用表达式,何时用表达式语句,二者不要搞混了。
例如,
b=a+3
是一个表达式;而
b=a十3;
便是一个表达式语句,这是一个赋值表达式语句。
类似地,表达式语句还有:
++i; (算术表达式语句)
m>n7m:
n; (条件表达式语句)
b==5 (比较表达式语句)
x&&++y||Z; (逻辑表达式语);
printf("0n!
\n") (函数调用也是表达式语句)
i=a,j=5,k=7; (逗号表达式语句)
等等。
有些表达式语句虽然是合法的,例如,
m>n?
m;n;
但是,它并没有实际意义,需要将其表达式的值赋给某个变量才有意义。
例如,
x=m>n?
m:
n;
这是一个有意义的表达式语句,它将一个表达式m>n?
m;n的值赋给了变量x.
虽然任何一个表达式加上分号都构成表达式语句,但在程序中要出现的是有意义的表达式语句。
4.1.2空语句
空语句是一种只有分号而没有表达式的特殊语句。
空语句是c语句中最简单的语句,因为它只由一个分号(;)组成。
空语句是一种不执行任何操作的语句。
说它是特殊语句是指它是一种"不做事情"的语句。
空语句在编程中也是有用的,它主要被用在需要一条不做事情的语句的地方。
例如,它可用来作循环体,则该循环是空循环。
下面是一个为了延迟一段时间的循环,其循环体可用空语句。
for
i<1000;i++)
空语句还可以用在goto.语句中语句标号的后面,即需要goto语句转向一条什么事情都不做的语句,那么在该语句标号的后面可用空语句。
4.2.1复合语句
复合语句是指由两条或两条以上语句用花括号({})括起来的语句序列。
C语句中的语句简单地划分为单条语句和复合语句两类。
单条语句是指只有一条语句,而复合语句是指多条语句的总称,但是,多条语句用花括号括起来才称复合语句。
没有用花括号括起的若干条单条语句只能称为语句序列。
所以,复合语句是一种特殊的语句序列,它被一对花括号括起来,它在程序中被看作是一条语句。
一般地说,凡是可以出现一条语句的地方都可以出现复合语句。
复合语句是C语言程序中常用的语句形式之一。
在复合语句内部还可以包含有复合语句,即复合语句可以嵌套。
例如,
上述便是复合语句嵌套的一种形式。
复合语句常用作if语句的if体、else体和elseif体以及循环语句的循环体等。
复合语句和函数体虽然都是用一对花括号({})来定界的,但是两者间是有区别的。
复合语句是由两条或两条以上语句序列组成的,而函数体内可以是多条语句的语句序列,也可以只有单条语句,还可以没有语句,即为空。
另外,函数体内可以包含若干个复合语句,而复合语句内不能包含函数体,只能包含复合语句。
4.2.2分程序
分程序又称程序块。
分程序是一种花括号内含有说明语句的复合语句。
分程序是一种复合语句,但是复合语句不一定是分程序,只有包含说明语句的复合语句才是分程序。
因此,复合语句包含了分程序,分程序是复合语句的一种。
具有下列格式的复合语句是分程序:
(说明语句序列)
(执行语句序列)
}
在分程序中,说明语句序列一定要放在执行语句序列的前边。
在分程序内可以定义或说明变量,也可以对已定义过的变量进行重新定义。
在分程序中定义的变量都是属于局部变量,它的作用域仅在定义它的分程序内。
有关这方面的详细情况在讲述存储类时再做详细描述。
4.3.1条件语句
条件语句是一种根据指定的条件来决定执行不同的程序段的语句。
条件语句又称if语句。
1.条件语句的格式和功能
条件语句的格式如下:
if(条件i>)
(语句1)
elseif((条件2))
(语句2>
elseif((条件3))
(语句3)
elseif((条件N))
(语句N)
else
(语句N+1>
这是if语句的完整的格式,其中,if和。
lse都是关键字。
(条件1)至<条件N)都是任一表达式,用来指出条件的表达式多是关系表达式和逻辑表达式,也可用其他表达式。
<语句1)至(语句N-}})都是单条语句或复合语句。
在if语句中,至少要有一个if短语,最简单的if语句格式如下:
if(条件))
(语句)
在if语句中,除了至少要有一个if短语之外,可以有一个(只能有一个)else短语,或者没有else短语。
elseif短语在if语句中可以没有,也可以有一个或多个。
一般在多路分支的间题中,需要用到多个elseif短语。
具有一个else短语而无elseif短语的if语句格式如下:
if(条件1))
(语句1)
else
(语句2)
if语句的功能描述如下:
先计算(条件1)中表达式的值,如果其值为非零,则执行(语句1),然后执行该if语句后边语句,如果其值为非零,则不执行(语句1>,接着计算《条件2)中表达式的值。
如果其值为非零,则执行(语句2),然后执行该if语句后边语句;如果其值为零,则不执行<语句2),接,计算<条件3)中表达式的值,再判断,依次类推。
如果N个条件对应的表达式的值全都为零,则执行<语句N+1)然后执行该if语句后边的语句。
如果N个条件对应的表达式中某个值不为零,则执行该条件后边的语句,然后退出if语句,即执行该if语句后边的语句。
if语句的功能可用下图所示:
2.if语句的应用
if语句在具体应用中要注意:
一个if语句中只能有一个。
Ise短语,也可以没有。
lse短语,而且在多重嵌套的if语句中,else短语总是与它前面最近的if相匹配的。
下面通过]L个具体例子说明if语句的使用。
[例4.1]输入两个整数,按其值由大到小顺序输出这两个数。
Main()
{
inta,b,t,
pcintf("Inputa,b;"),
scanf("%d%d"&a,&b),
if(a
{
t=a
a=b,
b=t,
}
printf(%d,"d\n,",a,b);
}
执行该程序后,屏幕显示如下提示信息:
Inputa,b, 3u5
输入3和5后,按回车键3与5之间用空格符分隔,屏幕显示如下结果:
5.3
说明:
该程序中使用了最简单的if语句的格式。
仅有if短语和一个if体,该if体用一个复合语句,它由3条斌值表达式语句组成,其功能是实现变量a和b之间的内容的交换。
交换方法是通过第3个变量t,先将a的值斌给t,再将b的值赋给a,最后将t的值赋给b.其关系如下所示:
通过上述方法使得变量a和b的值进行了交换。
这是一种有用的算法,以后还会用到。
如果要求将两个整数按由小到大的顺序输出时,只需将程序中
if(a
改写为
ifb)
其余不变。
这时上例中输出结果如下:
3,5
〔例4.幻假设有一个物品其价格规定如下:
低于5公斤(含5公斤),每公斤a元,大于5公斤不足10公斤,每公斤b元,IO公斤以上(含10公斤),每公斤。
元。
编程计算该物品为m公斤的价格。
main()
{
floatx,p,a,b,c;
printf("Inputweightx:
");
scant("%f",&x)
prints("Inputpricea,b,c:
"),
scanf("%f%f%f%f",&a,&b,&c);
if(x<=5)
p=a*x;
elseif(x>5&&x<10)
P=b*x;
else
p=c*x;
printf("%.2f\n".p);
}
程序中变量x是该物品的重量,P是该物品的价格。
该程序中使用了一个if语句,该语句含有一个。
lseif短语和一个else短语句。
这是一个简单的多路分支程序。
如果分支再多时,可以再多用几个elseif短语。
[例4.3]较两个整型数的大小。
main()
(
inta,b;
printf("Inputa,b:
");
scanf("%d%d",&a,&b);
if(a1=b)
if(a>b)
printf("a}b\n");
else
printf("a
else
printf("a=b\n};
}
执行该程序输入两个lilt型数:
Inputa,b:
-35
a
说明:
本例程序中,用了一个if-else语句,该语句的if体又是一个if-else语句,这是if语句嵌套。
当从键盘输入两个int型数以后,程序中a和b获取了值。
如,a为一3,b为5,显然,这时a!
=b为非零,接着执行if体,这又是一个if-else语句,先判断a>b为。
,则执行printf("a
此例中使用的if语句还有其他形式。
例如,
if(a==b)'
printf("a=b\n"),
else
if(a>b)
printf("a>b\n").
else
printf("a,b\n}}
还可以写成如下形式,
if(a==b)
printf("a=b\n");
elseif(a>b)
printf("a>b\n");
ease
printf("a
还可以写成如卜形式:
if(a>=b)
if(a=b>
prinrf("a=b\n");
e1Se
printf("a>b\n");
else
printf("a 还有很多其他的等价写法,这里不再一一列举。
在if语句嵌套时,如果if体或elseif体或else体是一个if语句时,则应该被完全包含在体内。
一般形式如下:
if((条