1. while循环
while循环是C语言中最基本的循环语句之一,它的语法结构如下:
while (condition)
{
// 循环体语句
}
该段代码的含义是,只要条件expression的值为真,就执行循环体语句,然后再判断expression的值是否仍为真,如果为真则继续执行循环体,直到expression的值为假时停止循环。
比如我们可以用while循环来遍历一个数组中的所有元素:
int arr[5] = {1, 2, 3, 4, 5};
int i = 0;
while (i < 5)
{
printf("%d ", arr[i]);
i++;
}
上面的代码输出的结果是:
1 2 3 4 5
1.1 while循环的特点
while循环具有以下特点:
while循环只有在满足条件的情况下才会执行循环体语句。
循环次数不确定,由满足条件的次数决定。
判断条件在执行循环体之前,如果条件不成立,循环体一次也不会执行。
在执行循环体后,再判断条件是否成立,如果成立继续执行循环体,否则退出循环。
2. do while循环
do while循环也是很基础的循环语句,其语法结构如下:
do
{
// 循环体语句
} while (condition);
与while循环相比,do while循环的循环体至少执行一次,因为它是先执行循环体,再对条件进行判断。如果条件仍然成立,则继续执行循环体,直到条件不成立时停止循环。
我们可以用do while循环来实现一个猜数字的小游戏:
int answer = 66;
int guess;
do
{
printf("Please enter a number: ");
scanf("%d", &guess);
if (guess > answer)
printf("Too high! Try again.\n");
else if (guess < answer)
printf("Too low! Try again.\n");
} while (guess != answer);
printf("Correct! You win!");
上面的代码会提示用户输入一个数字,如果猜错了,就告诉用户结果是偏高还是偏低,然后再次让用户输入数字,直到猜对为止。
2.1 do while循环的特点
do while循环具有以下特点:
无论条件是否成立,循环体至少会执行一次。
循环次数不确定,同样是由满足条件的次数决定。
在执行完循环体后,再判断条件是否成立,如果成立继续执行循环体,否则退出循环。
3. while和do while的区别
while和do while循环的最大区别在于判断条件的时机:
while循环在每次执行循环体之前判断条件是否成立,如果条件不成立,一次循环也不会执行。
do while循环在执行完循环体之后才判断条件是否成立,因此无论如何循环体至少会执行一次。
比较这两种循环的差异,我们可以参考以下代码:
int i = 0;
while (i > 0)
{
printf("%d ", i);
i++;
}
由于i的初值是0,因此循环条件不成立,while循环体中的语句一次也不会执行。
int i = 0;
do
{
printf("%d ", i);
i++;
} while (i > 0);
由于do while循环先执行循环体再判断条件,因此循环体会至少执行一次。在这个例子中,循环体会执行一次并输出0,然后i自增为1,此时条件i > 0不成立,循环结束。
在实际开发中,while循环和do while循环都可以用来完成同样的任务,但在一些特定的场景下,它们的行为可能是不同的,因此需要我们根据具体的情况来选择合理的循环方式。