详解三种循环结构

技术与开发

语言类型:C语言

上手难度:★★★★

考试类型:计算机二级

题目:设变量已正确定义,则以下能正确计算f=n!的程序段是[2005年9月C语言选择题第27题]

42-f14-3.jpg

答案:D

解析:这是一道送分题,考察考生对for语句的理解。

A答案:f的值为0*1*2……*n=0;

B答案:计算的是f = (n-1)!,比题目的要求少循环了一次;

C答案:应该改为for(i=n;i>1;i--)

循环结构是历年考题的重中之重,也是C语言的难点之一,每年考生在此知识点上失分的不在少数,考生对循环结构的理解和掌握程度是能否顺利考试过关的关键,本文结合常见的考题形式对循环结构的难点进行剖析,希望考生能吃透循环结构,在此知识点上尽量少失分或不失分。

一、for语句循环

1.for语句一般形式中的各表达式都可省略,但分号间隔符不能少。需要注意省略表达式1之前要给循环变量赋初值。

2.如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。

42-f14-4.jpg

图中for语句的表达式全部省去。由循环体中的语句实现循环变量的递减和循环条件的判断。当n值为0时,由break语句中止循环,转去执行for以后的程序。在此情况下,for语句已等效于while( 1)语句。如在循环体中没有相应的控制手段,则造成死循环。

二、while语句循环

1.while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环。

2.循环体如包括有一个以上的语句,则必须用{}括起来, 组成复合语句。

3.应注意循环条件的选择以避免死循环。

4.允许while语句的循环体又是while语句,从而形成双重循环。

三、do-while语句循环

1.do-while语句和while语句的区别在于do-while是先执行后判断,因此do-while至少要执行一次循环体。而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。while语句和do-while语句一般都可以相互改写。

2.在if语句和while语句中, 表达式后面都不能加分号, 而在 do-while语句的表达式后面则必须加分号。

3.do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。在do和while之间的循环体由多个语句组成时,也必须用{}括起来组成一个复合语句。

复习题

有以下程序

main()

{ int i,j,x=0;

for(i=0;i<2;i++)

{x++;

for(j=0;j<=3;j++)

{if(j%2)continue;

x++;

}

x++;

}

printf("x=%d\n",x);}

程序执行后的输出结果是。

读者反馈:

读者 小王:不久我就要参加C语言二级考试了,想咨询一下怎么复习效果好?

小编:复习的第一步是要先把教材吃透,然后再做一些历年的考试真题。根据经验,每年的考题中都会有一些重复或相似的考题。特别要把最近几年的几套考题摸透,知道哪些是最近强调的重点,做到有的放矢。最后,你还要针对自己的薄弱点做一些专项练习。