C - 循环入门:while循环
嘿,未来的编程超级巨星!准备好探索循环的奇妙世界了吗?今天,我们将探讨编程中最基本的概念之一:C语言中的while循环。相信我,一旦你掌握了这个,你会觉得自己在编码上解锁了超能力!
什么是while循环?
在我们深入细节之前,先来了解一下while循环是什么。想象你在玩一个视频游戏,你需要击败10个敌人才能完成一个关卡。你是想编写10次相同的“攻击”代码,还是希望只需说一句“只要还有敌人,就继续攻击”?这正是编程中while循环的作用!
while循环允许你重复执行一段代码,直到某个条件为真。就像告诉你的电脑:“嘿,继续做这个,直到我告诉你停止!”
C while循环的语法
让我们来看看C语言中while循环的基本结构:
while (condition) {
// 要重复的代码
}
就这么简单!condition
在每次循环迭代前进行检查。如果它为真,大括号{}
内的代码就会被执行。这个过程会重复,直到条件变为假。
C while循环的流程图
为了可视化while循环的工作方式,让我们来看一下流程图:
┌─────────────┐
│ 开始 │
└──────┬──────┘
│
▼
┌─────────────────┐
│ 检查条件 │
└────────┬────────┘
│
▼
┌───────────┐ 否
┌───┤ 条件为真? ├────────┐
│ │ │ │
│ └───────────┘ │
│ │ 是 │
│ ▼ │
│ ┌──────────────┐ │
│ │ 执行代码 │ │
│ └──────┬───────┘ │
│ │ │
└─────────┘ │
▼
┌──────────┐
│ 结束 │
└──────────┘
这个流程图显示,首先检查条件。如果为真,执行代码,然后我们回到检查条件。这个循环继续,直到条件变为假。
C while循环是如何工作的?
让我们分解这个过程:
- 程序遇到while循环。
- 它检查括号内的条件。
- 如果条件为真,它执行循环内的代码。
- 执行完代码后,它回到步骤2。
- 如果条件为假,它跳过循环,继续程序的其余部分。
C while循环的例子
是时候举个例子了!让我们创建一个简单的倒计时程序:
#include <stdio.h>
int main() {
int 倒计时 = 5;
while (倒计时 > 0) {
printf("%d...\n", 倒计时);
倒计时--;
}
printf("发射!\n");
return 0;
}
输出:
5...
4...
3...
2...
1...
发射!
让我们分解一下:
- 我们从
倒计时 = 5
开始。 - while循环检查
倒计时 > 0
(这为真)。 - 它打印当前的倒计时值。
- 我们使用
倒计时--
将倒计时
减少1。 - 步骤2-4重复,直到
倒计时
变为0。 - 当
倒计时
为0时,条件变为假,我们退出循环。 - 最后,我们打印“发射!”
使用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
有时,你可能想要提前退出循环或跳到下一次迭代。这时break
和continue
语句就派上用场了。
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