do-while
是C语言中的一种循环结构,与while
循环类似,但有一个重要区别:do-while
循环会先执行一次循环体,然后再检查条件表达式。这意味着do-while
循环至少会执行一次。
基本语法
do {
// 循环体代码
} while (条件表达式);
执行流程
- 执行循环体内的语句
- 计算条件表达式的值
- 如果条件为真(非零),返回步骤1;如果为假(零),退出循环
与while循环的区别
特性 |
do-while循环 |
while循环 |
条件检查时机 |
循环体执行后 |
循环体执行前 |
执行次数 |
至少执行一次 |
可能一次都不执行 |
示例代码
示例1:基本用法
#include<stdio.h>
int main()
{
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 5); // 注意结尾的分号不可省
return 0;
}
// 输出:1 2 3 4 5
示例 2:计算阶乘
#include <stdio.h>
int main() {
int n, i = 1;
long factorial = 1;
printf("请输入一个正整数: ");
scanf("%d", &n);
do {
factorial *= i;
i++;
} while (i <= n);
printf("%d的阶乘是%ld\n", n, factorial);
return 0;
}
示例 3:菜单选择
#include <stdio.h>
int main() {
int choice;
do {
printf("\n菜单:\n");
printf("1. 选项一\n");
printf("2. 选项二\n");
printf("3. 退出\n");
printf("请选择: ");
scanf("%d", &choice);
switch(choice) {
case 1:
printf("你选择了选项一\n");
break;
case 2:
printf("你选择了选项二\n");
break;
case 3:
printf("正在退出...\n");
break;
default:
printf("无效选择,请重试\n");
}
} while (choice != 3);
return 0;
}
注意事项
- 不要忘记
while
后面的分号(;
),这是常见的语法错误 - 确保循环条件最终会变为假,否则会导致无限循环
- 当需要循环至少执行一次时,使用
do-while
比while
更合适
do-while
循环在需要先执行操作再检查条件的场景中非常有用,如用户输入验证、菜单系统等。