C语言从入门到精通(视频实战版)
上QQ阅读APP看书,第一时间看更新

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()等,其主要目的是为了防止程序进入死循环。