#include
int main() {
int i = 5;
// 条件为假,但仍执行1次循环体
do {
printf("i = %d\n", i);
i++;
} while (i < 5);
return 0;
}
2. while循环(条件假则不执行)
#include
int main() {
int i = 5;
// 条件为假,循环体一次都不执行
while (i < 5) {
printf("i = %d\n", i);
i++;
}
return 0;
}
3. 核心差异总结
特性
do...while循环
while循环
执行顺序
先执行循环体,后判断条件
先判断条件,后执行循环体
执行次数
至少执行1次
可能0次
语法结尾
while()后必须加分号
while()后无分号({}前)
适用场景
必须先执行一次的场景(如菜单、输入验证)
需先判断再执行的通用场景
三、do...while循环常见操作(高频考点)
1. 数值求和(1~100累加)
#include
int main() {
int i = 1, sum = 0;
do {
sum += i; // 累加当前i值
i++; // 循环变量自增,避免死循环
} while (i <= 100); // 循环条件:i不超过100
printf("1~100求和结果:%d\n", sum); // 输出5050
return 0;
}
2. 菜单循环(交互场景)
#include
int main() {
int choice;
do {
// 显示菜单(至少执行1次)
printf("===== 功能菜单 =====\n");
printf("1. 查看信息\n");
printf("2. 修改信息\n");
printf("0. 退出程序\n");
printf("请输入选择:");
scanf("%d", &choice);
// 功能选择
switch(choice) {
case 1: printf("查看信息功能\n"); break;
case 2: printf("修改信息功能\n"); break;
case 0: printf("退出程序!\n"); break;
default: printf("输入错误,请重新选择!\n");
}
} while (choice != 0); // 选择0时退出循环
return 0;
}
3. 计数统计(统计输入正数个数)
#include
int main() {
int num, count = 0;
do {
printf("请输入一个整数(输入0结束):");
scanf("%d", &num);
if (num > 0) {
count++; // 正数则计数+1
}
} while (num != 0); // 输入0终止循环
printf("输入的正数个数:%d\n", count);
return 0;
}
四、do...while循环常见错误(高频考点)
遗漏结束分号:do{} while(条件) 末尾未加;(语法错误)
死循环:循环变量未更新(如do{...} while(1); 无break时)
条件表达式错误:将赋值=误写为判断==(如while(i=5))
循环体范围错误:多语句未加{},导致仅第一条语句循环
混淆while/do...while:在需0次执行场景误用do...while
// 错误示例1:遗漏结束分号
#include
int main() {
int i = 1;
do {
printf("%d\n", i);
i++;
} while (i <= 5) // 错误:缺少分号,编译失败
return 0;
}
// 错误示例2:死循环(循环变量未更新)
#include
int main() {
int i = 1;
do {
printf("%d\n", i);
// 错误:无i++,i永远=1,条件恒为真
} while (i <= 5);
return 0;
}
例题精选
例题1:do...while基本执行(输出1~5)
使用do...while循环输出1到5的整数,要求体现"先执行后判断"的特性。
#include
int main() {
int i = 1;
do {
printf("%d ", i);
i++;
} while (i <= 5);
return 0;
}
#include
int main() {
int i = 6;
// do...while循环(执行1次)
do {
printf("do...while: %d\n", i);
i++;
} while (i <= 5);
// while循环(不执行)
i = 6;
while (i <= 5) {
printf("while: %d\n", i);
i++;
}
return 0;
}
#include
int main() {
int n, i = 1, sum = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
do {
sum += i;
i++;
} while (i <= n);
printf("1~%d累加和:%d\n", n, sum);
return 0;
}
// 错误代码
#include
int main() {
int i = 1, sum = 0;
do
sum += i;
i++;
while (i <= 10) // 错误1:遗漏分号
printf("sum = %d\n", sum);
return 0;
}
修正后代码:
#include
int main() {
int i = 1, sum = 0;
do { // 错误2:多语句未加{},补充花括号
sum += i;
i++;
} while (i <= 10); // 错误1:补充分号
printf("sum = %d\n", sum);
return 0;
}