首页 理论教育 C语言程序设计-讲解while循环语句

C语言程序设计-讲解while循环语句

时间:2023-10-29 理论教育 版权反馈
【摘要】:另外,while语句中表达式外的一对圆括号是必须有的,不可以省略。若循环体不只包含一个语句时,一定要使用复合语句,否则,只将while后的第一个语句当作循环体语句。若while(表达式)后加了分号,则while的循环体为空语句。n是while语句的循环变量,需要在while语句前使用“n=1;”语句对n赋初值。用while语句求n!。

C语言程序设计-讲解while循环语句

while语句的特点是首先判断条件是否成立,然后决定是否执行循环体,也就是“先判断,后执行”,可以用来实现“当型”循环结构。

1.while语句的一般形式

while(表达式)语句

(1)while语句中的“表达式”是循环条件,一般是关系表达式或逻辑表达式,也可以是算术表达式。表达式的值非0为“真”,表示条件成立;0为“假”,表示条件不成立。另外,while语句中表达式外的一对圆括号是必须有的,不可以省略。

例如:

s=0;

n=10;

while(n)s=s+n--;

在这个while语句中“n”是循环条件,在循环执行过程中,n的值每次减1,当n的值为0时,循环条件不成立,结束循环。“n”外的一对圆括号是不能省略的。

(2)while语句中的“语句”就是多次重复执行的循环体,它可以是一个简单的C语句,也可以是一个复合语句,甚至也可以是一个空语句。

注意下列两个程序段的区别:

程序段1:

while(n<=100){

 s=s+n;

n=n+1;}

程序段2:

while(n<=100)

 s=s+n;

 n=n+1;

程序段1的循环体是复合语句,循环体中的“s=s+n;”与“n=n+1;”两条C语句都是while语句每次循环时需要执行的。程序段2的循环体是赋值语句“s=s+n;”,循环时会反复执行这一条语句,而“n=n+1;”不是循环体中的语句。

(3)while语句的特点“先判断,后执行”,即先判断表达式的值后再执行循环体。如果循环条件一开始就不成立,则循环体一次都不执行。与for语句一样,可以用来实现“当型”循环结构,因此,对于while语句可以使用for语句进行改写。

例如:

实现1~100求和的while语句为:

i=1;sum=0;

while(i<=100)

 sum=sum+i;

 i++;

可以用for语句改写为:

sum=0;

for(i=1;i<=100;i++)

 sum=sum+i;

while语句之前对于循环变量赋初值的语句“i=1;”,可以作为for语句的表达式1。while语句循环体中的用于循环变量增值的语句“i++;”,可以作为for语句的表达式3。

2.while语句的执行过程

while语句的执行过程如图4.4所示:

Step1:求解“表达式”并判断。若值为非0(真),执行Step2,否则执行Step3。

Step2:执行循环体中的语句,转向Step1。

Step3:结束循环,执行while语句下面的语句。

从while语句的执行过程可以看出,若第一次求解作为循环条件的表达式的值为假,while语句的循环体语句将一次也得不到执行。

图4.4 while语句的执行过程

3.while语句的使用

while语句是C语言中常用的简单实用循环语句,使用频率较高,使用while语句需要注意以下几点:

(1)若while语句第一次执行时循环条件成立,在循环的执行过程中将逐步改变循环条件,使循环条件趋向不成立,直至循环条件不成立时结束循环,所以循环体中一定要有改变循环条件的语句。

例如:

i=1;sum=0;

while(i<=100)

 sum=sum+i;

 i++;

}(www.xing528.com)

循环体中的语句“i++;”就是改变循环条件的语句,经过多次循环之后,i的值逐渐趋向于100,当i的值为100时,执行完while语句的最后一次循环,这时i的值为101,“i<=100”表达式为假,退出循环。

(2)若第一次执行时循环条件就不成立,则循环体一次也不执行;若循环条件永远成立,则会形成“死循环”。对于这样的while语句,编程时应避免使用。

(3)若循环体不只包含一个语句时,一定要使用复合语句,否则,只将while后的第一个语句当作循环体语句。

(4)若while(表达式)后加了分号,则while的循环体为空语句。

程序内容如下:

1 #include<stdio.h>

2 int main()

3 {

4  int n,sum=0;

5  n=1;

6  while(n<=100)

7  {

8   sum+=n;

9   n++;

10  }

11  printf("%d\n",sum);

12  return 0;

13 }

程序结果如图4.5所示:

图4.5 例4.3程序结果图

【例题中关键问题说明】

(1)sum作为存放累加结果的变量,使用前要清零。

(2)n是while语句的循环变量,需要在while语句前使用“n=1;”语句对n赋初值。

(3)程序中的“n++;”是在程序的执行过程中使循环条件趋向不成立的语句,应该作为循环体中的内容,所以需要和反复执行的语句“sum+=n;”放在一对花括号内组成一条复合语句。

【例4.4】用while语句求n!。

程序内容如下:

1 #include<stdio.h>

2 int main()

3 {

4  int i,n,s=1;

5  scanf("%d",&n);

6  i=1;

7  while(i<=n)

8  {

9   s=s*i;

10   i++;

11  }

12  printf("s=%d\n",s);

13  return 0;

14 }

程序结果如图4.6所示:

图4.6 例4.4程序结果图

【例题中关键问题说明】

(1)变量i是本程序中while语句的循环变量,需要在while语句前使用“i=1;”语句对i赋初值,循环结束时i的值为“n+1”。

(2)s作为存放结果的变量,使用前要置1,因为s是定义的整型变量,存储数值的范围有限,若n的值较大,将不能输出正确的结果,要解决这个问题,可以将s定义为存储数值范围较大的类型的变量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈