首页 > 编程笔记 > C语言笔记 阅读:23

C语言while循环的用法(新手必看)

在 C语言中,while 循环是一种常用的循环结构,它可以重复执行一段代码,直到指定的条件不再满足。

while 循环的语法形式如下:
while(测试条件)
    循环行为
每次循环开始时,先判断条件是否为真。如果条件为真,则执行循环体语句,然后再次判断条件是否为真,如此循环下去,直到条件不再为真,循环结束。

和 if 分支语句一样,while 也仅对其后一条语句产生效果。如果要循环多条语句,则需要使用花括号将它们组合成一条复合语句。
while(测试条件)
{
    循环行为1
    循环行为2
    循环行为3
    ...
}
让我们使用 while 语句来尝试实现 1~100 的求和过程:
#include <stdio.h>
int main()
{
   int i = 1, sum = 0;
   while(i <= 100)
   {
       sum = i + sum;
       i++;
   }
   printf("%d %d\n", i, sum);
   return 0;
}
在上面的例子中,首先初始化变量 i 为 1,初始化变量 sum 为 0,然后进入 while 循环,判断条件i <= 100是否成立,只要 i 在 1 到 100 的区间内,表达式结果就为真,都能进入循环体内。在循环体内,计算i + sum,将结果赋值给 sum,并且 i 每次自增 1。

循环进行的过程如下:
最终,输出 1~100 的和是 5050。

C语言while死循环

C语言中用 1 表示真,用 0 表示假,循环中的测试条件要么是真,要么是假。

但是,如果我们故意将测试条件结果改为 1 或 0 以外的数值,会怎么样呢?分析下面的实例程序:
#include <stdio.h>
int main()
{
   while(2)
   {
       printf("Hello");
   }
   return 0;
}
由于在 C 语言中非零即为真,因此 while 将 2 看作真,导致了无限次数的循环,程序将不停地输出 Hello。

当你的程序陷入了无限循环,或者你想打断程序的运行,可以按快捷键Ctrl + C让程序停止运行。

避免死循环的三个条件

在上面的求和实例代码中,我们先将变量 i 设置为 1。接着,i 与一个有限值进行比较作为循环条件。最后,每一次执行完循环语句后,变量 i 的值将改变。这个变量 i 通常被称为计数器。

要想让循环运行特定的次数并在正确的时间退出,需要满足以下三个条件:
  1. 开始时,为计数器设置初始值;
  2. 将计数器与一个有限值进行比较作为循环条件;
  3. 在循环语句中更新计数器。

这三个条件对应的代码如下:
int i = 1;
while (i <= 100)
{
    i++;
}
注意,计数器的初始值如果设置不正确,则将会导致无法开始循环或者发生错误次数的循环;如果循环条件设置不正确,则循环将无法开始或结束。如果计数器不更新,则将导致循环无法结束。

C语言do-while循环

do-while 循环和 while 循环非常相似,不同之处在于,它们的执行顺序不同:
while 与 do-while 循环的对比如下图所示:


图 1 while与do-while循环的对比

do-while 循环的基本语法如下:
do {
    循环行为1
    循环行为2
    循环行为3
    ...
}while(循环条件);  //  注意do-while有分号结尾

注意,do-while 需要有分号结尾。

在执行 do-while 循环时,程序会先执行一次循环体语句,然后判断循环条件是否满足。如果循环条件满足,程序会继续执行循环体语句,直到循环条件不满足。与 while 循环不同,do-while 循环中的循环体语句至少会被执行一次,即使循环条件一开始就不满足。

do-while 循环的一个常见应用是读取用户输入,例如:
#include <stdio.h>
int main()
{
   int num;
   do {
       printf("请输入一个大于0的整数:");
       scanf("%d", &num);
   } while (num <= 0);
   return 0;
}
在这个例子中,程序要求用户输入一个大于 0 的整数,如果用户输入的整数不符合要求,程序会继续提示用户重新输入,直到用户输入一个满足条件的整数。

由于 do-while 循环中的循环体语句至少会被执行一次,因此即使一开始输入的数据不符合要求,也可以确保用户至少会输入一次数据。

相关文章