C 语言 do-while 循环

2025年3月27日 | 阅读 8 分钟

循环 是一种编程控制结构,允许您在满足特定条件时无限期地执行一段代码块。循环用于执行重复的活动并提高编程性能。C 编程语言中有多种循环,其中之一就是“do-while”循环

“do-while”循环 是 C 语言中的一种循环形式,它首先执行代码块,然后是条件。如果条件为,则循环继续运行;否则,它停止。但是,无论条件最初是否为,它都确保代码块至少被执行一次。

do-while 循环语法

下面给出了 C 语言 do-while 循环的语法:

这些组件分为以下几类:

  • do 关键字 标记循环的开始。
  • 大括号 {} 内的代码块是循环体,其中包含您要重复的代码。
  • while 关键字 后面跟着一对括号 () 中的条件。在代码块执行后,将验证此条件。如果条件为,则循环继续;否则,循环结束

C 语言 do-while 循环的工作原理

让我们看一个 C 语言 do-while 循环 工作原理的示例。在此示例中,我们将编写一个简单的程序,该程序会询问用户密码,并持续询问直到输入正确的密码为止。

示例

编译并运行

程序运行如下:

  1. 包含了以下头文件:<stdio.h> 用于标准输入输出例程,<string.h> 用于字符串操作函数
  2. 正确密码被定义为字符数组 (char password[]),值为“secret”
  3. 之后,我们定义另一个字符数组 input 来存储用户的输入。
  4. do 关键字 表明循环中包含的代码块将至少执行一次。
  5. 使用 printf() 函数,我们在循环内显示一个提示,要求用户输入其密码。
  6. 接下来,我们使用 scanf() 函数读取用户输入,并将其存储在 input 数组中。
  7. 在读取输入后,我们使用 strcmp() 函数将输入与正确密码进行比较。如果字符串相等,strcmp 函数返回 0。因此,只要输入和密码不相等,我们就继续循环。
  8. 一旦输入了正确的密码,循环就会终止,然后我们使用 printf() 函数打印“Access granted!”
  9. 之后,程序返回 0,表示执行成功。

输出

让我们逐步了解一个可能的场景:

Enter the password: 123
Enter the password: abc
Enter the password: secret
Access Granted!

说明

在此示例中,用户最初输入了错误的密码 “123”“abc”。循环会提示用户,直到输入正确的密码 “secret”。一旦提供了正确的密码,循环就会终止,并显示“Access granted!”消息。

C 语言 do-while 循环示例

示例 1

这是一个简单的 C 语言“do-while”循环示例,它打印从 1 到 5 的数字:

示例

编译并运行

输出

1
2
3
4
5

说明

在此示例中,do 循环内的代码块将至少执行一次,打印从1 到 5 的数字。每次迭代后,i 的值都会增加,并检查条件i<= 5。如果条件仍然为真,则循环继续;否则,它会终止。

示例 2

使用 do while 循环打印给定数字的乘法表的程序

示例

编译并运行

输出

Enter a number: 5
5
10
15
20
25
30
35
40
45
50
Enter a number: 10
10
20
30
40
50
60
70
80
90
100

示例 3

让我们来看一个使用do...while 循环打印给定数字 N 的乘法表的程序:

示例

编译并运行

输出

假设您输入的数字是 7:

Please enter a number to generate its multiplication table: 7
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

该程序从 1 到 10 计算并打印7的乘法表。

无限 do while 循环

无限循环是指由于其条件始终为或缺乏终止条件而无限运行的循环。下面是一个 C 语言无限 do...while 循环的示例:

示例

编译并运行

在此示例中,由于条件 1 始终为,因此循环将无限期地运行。

输出

运行程序时,您将看到它不断打印“Iteration x”(其中 x 是迭代次数),而不会停止。

Iteration 1
Iteration 2
Iteration 3
Iteration 4
Iteration 5
... (and so on)

要中断此类无限循环,您通常会在循环内使用 break 语句,或者使用一些您可以控制的外部条件,例如按下特定的按键组合。在大多数桌面环境中,键盘快捷键 Ctrl+C 可以退出循环。

C 语言嵌套 do while 循环

在 C 语言中,我们来看一个嵌套 do...while 循环的示例。在此示例中,我们将编写一个程序,该程序使用嵌套的 do...while 循环来创建数字模式。

示例

编译并运行

在此程序中,我们使用嵌套的 do...while 循环来生成数字模式。外部循环控制行数,内部循环生成每一行的数字。

输出

假设您输入的行数为 5:

Enter the number of rows: 5
1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 

说明

在此示例中,程序以三角形的形状生成数字模式。外部循环遍历行,内部循环在每一行内遍历,打印从 1 到当前行号的数字。

while 和 do while 循环之间的区别

下面是 C 语言中 while 循环和 do-while 循环的表格比较:

方面while 循环do-while 循环
语法while (condition) { ... }do { ... } while (condition);
循环体执行在执行之前检查条件。在条件之前执行主体。
首次执行条件必须最初为真。主体至少执行一次。
循环执行可能执行零次或多次。将至少执行一次。
示例while (i< 5) { printf("%d\n", i); i++; }do { printf("%d\n", i); i++; } while (i< 5);
常见用例当循环可能根本不运行时。当您希望循环至少运行一次时。

While 循环:在检查条件之前执行循环体。如果条件最初为,则循环可能不执行。

Do-while 循环:在检查条件之前,循环体至少执行一次。这保证了循环至少完成一次迭代。

当您希望循环基于可能最初为的条件运行时,请使用 while 循环;当您希望循环至少运行一次(无论初始状态如何)时,请使用 do-while 循环

do while 循环的特点

C 语言中的 do-while 循环具有几个基本特征,这些特征使其在某些情况下成为有效的编程技术。以下是 do-while 循环的重要特征:

  • 保证执行:与其他循环结构不同,do-while 循环确保循环体至少执行一次。因为条件是在循环体之后评估的,所以在验证条件之前会执行循环内的代码。
  • 测试后循环:do-while 循环是一种后测试循环,这意味着在循环体执行后评估循环条件。如果条件为真,则循环体再次执行。此行为允许您在确保一项给定活动已完成之前验证重复的条件。
  • 条件控制:只要 while 关键字后面的指定条件保持,循环就会继续执行。当条件评估为时,循环终止,并将控制转移到循环之后的语句。
  • 灵活性:do-while 循环可以在多种上下文中被利用。它通常用于必须至少执行一次代码块的情况,例如菜单驱动程序、输入验证重复计算
  • 嵌套能力:与其他循环结构类似,do-while 循环可以嵌套在其他循环控制结构中,以创建更复杂的控制流模式。它允许创建嵌套循环并实现复杂的重复任务。
  • Break 和 Continue: break 语句可以在 do-while 循环中使用,以终止循环执行并提前退出循环。continue 语句可以跳过当前迭代中剩余的代码,并跳转到循环的下一次迭代。
  • 局部范围:do-while 循环体内声明的变量具有局部范围,并且只能在循环块内访问。它们无法在循环外部或由其他循环或控制结构访问。
  • 无限循环控制:确保在循环体内最终修改循环的条件至关重要。修改是为了防止条件不断评估为真的无限循环。修改条件可确保循环在某个时刻终止。