C语言辅导资料 下载本文

printf(“%d,%d,%d\\n”,a,b,c); }

第三章 选择语句和循环语句

【要点归纳】

1、if语句

if语句有三种使用形式 ⑴单分支if语句。

if(条件) 语句; ⑵双分支if语句。

if(条件) 语句1; else 语句2; ⑶多分支if语句。

if(〈条件1〉) 语句1; else if(〈条件2〉)语句2; ?

else if (〈条件n〉)语句n; else 语句n+1;

2、switch(开关)语句

switch语句用于方便地从多个语句中选择一个或多个语句执行。 switch(〈表达式〉) {

case 常量表达式1: 语句1; case 常量表达式2: 语句2; ?

case 常量表达式n: 语句n; default: 语句n+1; }

注:表达式的值一定是整型值,若为其他类型,最后都要转换为整型数。 3、while循环语句

while(条件)语句;

注:先判断条件,后执行语句; 4、do-while循环语句

do 语句;

while(条件);

注:先执行一次循环体,再判断条件。

While和do-while语句的差别是,后者至少执行“语句”一次,而前者有时一次也不执行语句。

5、for循环语句

for(表达式1;表达式2;表达式3) 语句;

13

注:省略各个表达式时,应能够知道其意义。

⑴“表达式1”可以省略,此时应在该语句之前给循环变量赋初值。其后的分号不能省略。

⑵“表达式2”可以省略,即无判定条件,循环无终止进行下去。需要在循环体中用break等语句退出循环。

⑶“表达式3”可以省略,这样需要在循环体“语句”中让循环变量变化,以保证循环能正常结束。

⑷“表达式1”和“表达式3”可以同时省略,这样为⑴和⑶两种情况同时出现,需要使用相关语句保证循环结束。

⑸三个表达式都可省略,这样为⑵和⑷两种情况同时出现,需要使用相关语句保证循环结束。

#include void main() {

int i=1,sum=0; for(; ;) {

if(i>100) break; sum+=i; i++; }

printf(“sum=%d”,sum); }

6、 break语句

break语句的使用格式很简单,由关键字break和分号构成,其功能如下:

? 在switch语句中,break用来使程序流程跳出switch语句,继续执行switch后的语

句;

? 在循环语句中,break用来从最近的循环体内跳出来。 7、 continue语句

continue语句只能用于循环语句中,作用为结束本次循环,即跳过循环体中尚末执行的语句,接着进行是否执行下一次循环的判定。

【本节例题选编】 1、选择题

【例3.1】以下语句错误的是

A.if(x>y); B.if(x=y)&&(x!=0) x+=y; C.if(x!=y) scanf(“%d”,&x); esle scanf(“%d”,&y); D.if(x

【例3.2】C语言的if语句中,用作判断的条件表达式为

A.任意表达式 B.逻辑表达式 C.关系表达式 D.算术表达式

【例3.3】为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与 配对。

A.缩排位置相同的if B.同一行上的if C.其之后最近的if D.其之前最近的if

【例3.4】以下程序的输出结果是

14

#include void main() {

int i=1,j=1,k=2;

if((j++ || k++) && i++) printf(“%d,%d,%d\\n”,i,j,k); }

A.1,1,2 B.2,2,1 C.2,2,2 D.2,2,3

【例3.5】已知int x=10,y=20,z=30; 以下语句执行后x,y,z的值是 。

if(x>y)

z=x; x=y; y=z;

A.x=10,y=20,z=30 B.x=20,y=30,z=30 C.x=20,y=30,z=10 D.x=20,y=30,z=20

【例3.6】以下程序的运行结果是 。

#include void main() {

int m=5;

if(m++>5) printf(“%d\\n”,m); else printf(“%d\\n”,m--); }

A.4 B.5 C.6 D.7

【例3.7】以下程序的输出结果是 。

#include void main() {

int a=100,x=10,y=20,ok1=5,ok2=0; if(x

if(ok2) a=10; a=-1;

printf(“%d\\n”,a); }

A.1 B.0 C.-1 D.值不确定

【例3.8】若a,b均是整型变量,正确的switch语句是

A.switch(a) B.switch(a)

{ {

case 1.0: printf(“i\\n”); case b: printf(“i\\n”); case 2: printf(“you\\n”); case 1: printf(“you\\n”); } }

C.switch(a+b) D.switch(a+b)

15

{ {

case 1: printf(“i\\n”); case 1: printf(“i\\n”); case 2*a: printf(“you\\n”); case 2: printf(“you\\n”); } }

【例3.9】对for(表达式1;;表达式3),可理解为

A.for(表达式1;0;表达式3) B.for(表达式1;表达式3;表达式3) C.for(表达式1;1;表达式3) D.for(表达式1;表达式1;表达式3)

【例3.10】执行以下程序段后,变量a,b,c的值分别是 。

int x=10,y=9; int a,b,c;

a=(--x= =y++)? --x: ++y; b=x++; c=y;

A.a=9,b=9,c=9 B.a=8,b=8,c=10 C.a=9,b=10,c=9 D.a=1,b=11,c=10

【例3.11】有以下程序段:

int n=0, p; do{

scnaf(“%d”,&p); n++;

}while(p!=12345 && n<3);

此处do-while循环的结束条件是 。 A.p的值不等于12345并且n的值小于3 B.的值等于12345并且n的值大于等于3 C.p的值不等于12345或者n的值小于3 D.p的值等于12345或者n的值大于等于3

【例3.12】下面程序中循环体的执行次数是 。

a=10; b=0;

do{ b+=2; a-=2+b; }while(a>=0);

A.1 B.2 C.3 D.4

【例3.13】以下程序段 。

x=-1; do

{ x=x*x; } while(!x);

A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误

【例3.14】以下程序的执行结果是

#include void main() {

int a=0, i;

for(i=1; i<5; i++) { switch(i)

16