C - 循环入门:while循环

嘿,未来的编程超级巨星!准备好探索循环的奇妙世界了吗?今天,我们将探讨编程中最基本的概念之一:C语言中的while循环。相信我,一旦你掌握了这个,你会觉得自己在编码上解锁了超能力!

C - While loop

什么是while循环?

在我们深入细节之前,先来了解一下while循环是什么。想象你在玩一个视频游戏,你需要击败10个敌人才能完成一个关卡。你是想编写10次相同的“攻击”代码,还是希望只需说一句“只要还有敌人,就继续攻击”?这正是编程中while循环的作用!

while循环允许你重复执行一段代码,直到某个条件为真。就像告诉你的电脑:“嘿,继续做这个,直到我告诉你停止!”

C while循环的语法

让我们来看看C语言中while循环的基本结构:

while (condition) {
// 要重复的代码
}

就这么简单!condition在每次循环迭代前进行检查。如果它为真,大括号{}内的代码就会被执行。这个过程会重复,直到条件变为假。

C while循环的流程图

为了可视化while循环的工作方式,让我们来看一下流程图:

┌─────────────┐
│   开始     │
└──────┬──────┘
│
▼
┌─────────────────┐
│ 检查条件       │
└────────┬────────┘
│
▼
┌───────────┐    否
┌───┤ 条件为真? ├────────┐
│   │           │        │
│   └───────────┘        │
│         │ 是           │
│         ▼              │
│  ┌──────────────┐      │
│  │ 执行代码     │      │
│  └──────┬───────┘      │
│         │              │
└─────────┘              │
▼
┌──────────┐
│   结束    │
└──────────┘

这个流程图显示,首先检查条件。如果为真,执行代码,然后我们回到检查条件。这个循环继续,直到条件变为假。

C while循环是如何工作的?

让我们分解这个过程:

  1. 程序遇到while循环。
  2. 它检查括号内的条件。
  3. 如果条件为真,它执行循环内的代码。
  4. 执行完代码后,它回到步骤2。
  5. 如果条件为假,它跳过循环,继续程序的其余部分。

C while循环的例子

是时候举个例子了!让我们创建一个简单的倒计时程序:

#include <stdio.h>

int main() {
int 倒计时 = 5;

while (倒计时 > 0) {
printf("%d...\n", 倒计时);
倒计时--;
}

printf("发射!\n");
return 0;
}

输出:

5...
4...
3...
2...
1...
发射!

让我们分解一下:

  1. 我们从倒计时 = 5开始。
  2. while循环检查倒计时 > 0(这为真)。
  3. 它打印当前的倒计时值。
  4. 我们使用倒计时--倒计时减少1。
  5. 步骤2-4重复,直到倒计时变为0。
  6. 倒计时为0时,条件变为假,我们退出循环。
  7. 最后,我们打印“发射!”

使用while作为条件循环

while循环非常适合于你不知道需要重复多少次的情况。让我们看一个例子,我们要求用户猜一个数字:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
srand(time(0));  // 为随机数生成设置种子
int secret = rand() % 100 + 1;  // 生成1到100之间的随机数
int guess = 0;
int attempts = 0;

printf("我在想一个1到100之间的数字。你能猜到吗?\n");

while (guess != secret) {
printf("输入你的猜测:");
scanf("%d", &guess);
attempts++;

if (guess < secret) {
printf("太低了!再试一次。\n");
} else if (guess > secret) {
printf("太高了!再试一次。\n");
}
}

printf("恭喜你!你在%d次尝试中猜到了数字!\n", attempts);
return 0;
}

在这个例子中,我们不知道用户需要多少次尝试,所以while循环非常合适。循环将继续,直到猜测与秘密数字匹配。

while循环中的break和continue

有时,你可能想要提前退出循环或跳到下一次迭代。这时breakcontinue语句就派上用场了。

break

break语句立即退出循环。以下是一个例子:

#include <stdio.h>

int main() {
int i = 1;
while (1) {  // 这将创建一个无限循环
printf("%d ", i);
if (i == 5) {
break;  // 当i达到5时退出循环
}
i++;
}
printf("\n循环结束!\n");
return 0;
}

输出:

1 2 3 4 5
循环结束!

continue

continue语句跳过当前迭代的剩余部分,并立即进入下一次迭代。让我们看看它是如何工作的:

#include <stdio.h>

int main() {
int i = 0;
while (i < 10) {
i++;
if (i % 2 == 0) {
continue;  // 跳过偶数
}
printf("%d ", i);
}
printf("\n循环结束!\n");
return 0;
}

输出:

1 3 5 7 9
循环结束!

更多C while循环的例子

让我们再看几个例子来巩固我们的理解:

例1:求和

#include <stdio.h>

int main() {
int num, sum = 0;

printf("输入要相加的数字(输入0结束):\n");

while (1) {
scanf("%d", &num);
if (num == 0) {
break;
}
sum += num;
}

printf("和是:%d\n", sum);
return 0;
}

这个程序会持续添加数字,直到用户输入0。

例2:斐波那契数列

#include <stdio.h>

int main() {
int n, first = 0, second = 1, next;

printf("输入要生成的斐波那契项数:");
scanf("%d", &n);

printf("斐波那契数列:\n");

int i = 0;
while (i < n) {
if (i <= 1) {
next = i;
} else {
next = first + second;
first = second;
second = next;
}
printf("%d ", next);
i++;
}

printf("\n");
return 0;
}

这个程序生成n项的斐波那契数列。

while循环与do while循环

在我们结束之前,让我们快速比较一下while循环和它们的表亲,do-while循环:

特性 while循环 do-while循环
条件检查 开始时 结束时
最小执行次数 0(如果初始条件为假) 1(总是至少执行一次)
语法 while (condition) { ... } do { ... } while (condition);
最佳用例 当你不确定是否需要执行循环时 当你知道你需要至少执行一次循环时

主要区别在于,do-while循环在检查条件之前至少执行一次代码块。

就这样,我的编程学徒!你刚刚解锁了C语言中的while循环力量。记住,熟能生巧,所以不要害怕尝试这些概念。在你意识到之前,你将像专业人士一样循环!快乐编码!??

Credits: Image by storyset