郑英姿
摘要:目前,在很多高校, 对于计算机专业来说,《C语言》是一门非常重要的专业基础课程,学习它的好坏,直接关系到后续课程的学习效果。C语言都被列为程序设计的入门语言,也是很多计算机专业学生学好《数据结构》、《c++程序设计》等专业课的前提条件。而循环语句又是C语言学习中的一个重点与难点。根据本人的体会,浅谈一下C语言循环语句的格式、执行过程以及在学习、生活中的一些应用。
关键字:while语句;do……While语句;for语句
一、引言
C语言是目前最受欢迎的语言之一,它具有强大的功能,语言简洁,结构紧凑,使用方便、灵活。在解决实际问题的过程中,常常会遇到一些需要重复处理的问题,循环结构可用来处理需要重复处理的问题。在C语言中,有三种类型的循环语句: while语句、do……While语句和for语句。前两个是条件循环,即根据条件是否为真来判断是否继续循环,后一个是计数循环,即根据设定的循环次数来执行循环。
一个完整的循环结构一般由四部分组成:循环变量的初始化、循环控制条件、循环体、循环变量的增值,其中,循环变量的初始化是指在进入循环前,给循环变量赋初值,否则首次进入循环时,无法确定循环控制条件是否成立;循环控制条件是重复执行循环体所需的条件,即当条件成立时执行循环体,否则结束循环;循环体是需要重复执行的操作序列;循环变量是决定循环条件是否成立的变量;循环变量的增值反映了循环变量的改变规律,它使循环变量的值向着使循环结束的方向改变。
二、三种循环语句的格式及执行过程
1、While 语句格式及执行过程
while( 表达式)
循环体语句
while语句的执行过程为:① 计算while后条件表达式的值。② 若表达式的值为真,则执行循环体语句,然后判断条件是否为真;如果为真,继续循环,如果为假,退出循环,即结束while语句。
在使用while语句时,应注意以下几个问题:①循环体语句可以是简单语句、复合语句或空语句。当循环体是一组语句时,必须用花括号括起来,组成复合语句。②while语句中的循环条件表达式可以是任何类型的表达式。③循环体内一定要有使表达式的值变为0(假)的操作,否则循环将无限进行。④while语句的特点是“先判断,后执行”,如果循环条件表达式的值一开始就为0,则循环体语句一次也不执行。
2、do……While 语句格式及执行过程
do
{ 语句 }while(表达式);
其中,表达式是循环控制条件,语句是循环体,可以是简单语句、复合语句或空语句。通常用复合语句,使得结构更清楚。特别注意:该语句while(表达式)后加分号。
do_while语句的特点是“先执行循环体,后判断循环条件”,当条件成立时继续执行循环体,条件不成立时结束循环。因此,do_while循环常用来实现类似“直到型”循环的“当型”循环结构。
for 语句格式及执行过程
for 语句较前两种循环语句更简洁、更灵活,不仅用于计数型循环,而且可以用于条件型循环,特别是处理循环次数确定的问题。
for(表达式1;表达式2;表达式3)
循环体语句
其中,表达式1为赋初值表达式,表达式2为条件表达式,表达式3为循环变量增值表达式
该语句执行过程: ①先对表达式1赋初值; ②判别表达式2是否满足给定条件,若其值为真,满足循环条件,则执行循环体内语句,然后执行表达式3,进入第二次循环,再判别表达式2,如此反复,直到判断表达式2的值为假,不满足条件,就终止for循环,执行循环体外语句。
使用for循环时,for语句的表达式可以部分或全部省略,但两个“;”是不可以省略。①省略表达式1,这时没有了给循环变量赋初值的操作,则应该在for语句之前给循环变量赋初值。②省略表达式2,相当于缺少条件判断,循环无限进行。③省略表达式3,则可以把循环变量的修改部分放到循环体中进行。④3个表达式全部省略,则for(;;)相当于while(1)。
三、break和continue语句
在C语言中,为了使循环控制更加灵活,C语言允许在特定条件成立时,使用break或continue语句跳过循环体其余语句,转向循环条件的判定语句。
1、break语句
break语句的一般形式为:break;
break语句有两个作用:用于switch语句时,退出switch语句,程序转至switch语句下面的语句;用于循环语句时,退出包含它的循环体,程序转至循环体下面的语句。
2、continue语句
continue语句的一般形式为:continue;
continue语句作用是:结束本次循环,跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断。在while语句、do……While语句中,continue语句把程序控制转到while后面的表达式处,在for语句中,continue语句把程序控制转到表达式3处。
break和continue的区别:continue语句只结束本次循环,而不是终止整个循环的执行,break语句则是结束循环,不再进行条件判断。
四、循环语句的应用分析
循环语句在学习、生活中有广泛的应用,我们通过例题进行分析说明循环语句的重要作用。
4.1例如输入某班一门课的成绩并计算其平均成绩。(人数不定,当输入成绩为-1时结束)。
分析:本例的特点是“循环次数不确定”,而是已知循环结束的条件。循环的组成:①循环体:将有效成绩score 加入部分和sum;输入下一个成绩score;
②循环控制条件:score!=-1;③ 循环变量的改变:用户输入;④循环变量的初值: 键盘输入。
程序如下:
main()
{ float score,sum=0;
int n=0;
printf(" enter a score(-1 for end):");
scanf("%f",&score;);
while(score!=-1)
{ sum+=score;
n++;
printf(" enter a score(-1 for end):");
scanf(“%f”,&score;);
}
printf(" n=%d,aver=%f",n,sum/n);
}
例4.2 百钱买百鸡:一百钱,买一百只鸡,其中公鸡3钱/只、母鸡1钱/只、小鸡3只/钱,问可买公鸡、母鸡、小鸡个多少只?
分析:使用穷举法求解。cock 在[0,33]的范围内取值,hen 在[0,100]的范围内取值,chick 在[0,100]的范围内取值,且只能取能被3整除的数。在以上的范围内找出所有满足百钱买百鸡的组合方式输出出来即可。
#include
main()
{
int cock,hen,chick,n=0;
for(cock=0;cock<=33;cock++)
for(hen=0;hen<=100;hen++)
for(chick=0;chick<=100;chick+=3)
if(cock+hen+chick==100&&cock;*3+hen+chick/3==100)
printf("Answer %d:cock %d,hen %d,chick %d! ",++n,cock,hen,chick);
}
五、总结
绝大多数情况下,三种语句是通用的,并且代码的差异不大。循环次数确定的程序,且组成循环的四个部分完整又简洁的情况下,多采用for语句。循环体的语句至少执行一次的情况下,多采用do_while语句。