5.2.1 while循环结构
while循环结构是指将根据用户所设定的控制条件,确定是否对循环体中的代码段重复执行。通过使用该循环结构,用户可以使某些重要的功能实现重复执行。在本小节中,将主要介绍while循环结构的原型及其使用方法等。
1.while循环结构原型
在C语言中,while循环结构也是根据用户所设定控制条件的真假进行功能实现的。该循环结构的使用原型如下:
while(istrue)//对用户设定的条件进行判断 { 功能代码段//用户编写的功能代码段 ……//省略部分代码 }
在上面的代码中,while结构的参数istrue将决定编写的功能代码是否会被执行。当参数istrue的值为true时,则功能代码段将被执行。否则,功能代码段将被跳过。其执行流程如图5.9所示。
图5.9 while循环流程图
注意 while循环结构与前面所介绍的if结构一样,其参数可以为表达式或者一个布尔变量。
2.使用while循环结构
例如,使用while循环结构对学生的成绩进行判断。如果该学生的成绩大于60,则输出其姓名以及提示信息。否则,将直接输出“考试不及格”的提示信息。具体代码如下:
#include <stdio.h>//包含头文件 main()//主函数 { int score1=80;//定义整型变量score1和score2,表示成绩 int score2=50; char name='L';//定义字符变量,表示学生姓名 int loop=0;//定义循环变量 loop=score1;//进行赋值 while(loop>60)//判断学生成绩是否大于60 { printf("该学生姓名为:%c ",name);//如果成绩大于60,说明学生的成绩合格 printf("考试成绩合格,成绩为:%d ",loop);//输出学生姓名和合格成绩 loop=score2;//将第二门成绩赋给循环变量loop } printf("该学生第二门成绩不合格! ");//输出提示语 return 0;//程序正常结束 }
在示例程序中,用户分别定义并初始化两门成绩,并将其中一门成绩赋给循环变量loop。通过使用while循环结构对循环变量的值进行判断。如果该值大于60,则说明成绩合格;否则,成绩不合格。当用户对第一门成绩判断完成后,应当在while结构的功能代码中添加代码“loop=score2;”表示将第二门成绩继续赋给循环变量loop。这样,while循环结构就会对成绩依次进行判断并执行功能代码,如图5.10所示。
图5.10 while循环结构程序运行结果
注意 如果while循环结构的控制条件为false时,程序将跳过while结构中的功能代码,继续执行。用户可以通过这种方法使一个运行中的while循环停止。
如果用户直接将while循环结构的参数设定为一个布尔变量,也可以实现相同的功能。例如,在程序中,定义一个布尔变量bol,并将其初始化为true。通过while循环结构对该变量进行判断,并输出循环次数。具体的代码如下:
#include <stdio.h>//包含头文件 main()//主函数 { bool bol=true;//定义并初始化一个布尔变量 int i=0;//定义并初始化循环次数标识变量 while(bol)//判断该布尔变量是否为true { i+=1;//使循环次数加1 printf("已经循环:%d ",i);//输出while循环的总次数 ……//省略部分代码 } return 0;//程序正常结束 }
上面的代码编译成功后,运行结果如图5.11所示。
如图5.11所示,由于while循环结构的参数bol始终为true,所以当程序运行时会不断地输出该循环结构的运行次数。
注意 用户在调试、运行该程序时,应当在代码中添加循环停止功能的代码,例如,getchar()等,其主要目的是为了防止程序进入死循环。