知识点精讲
一、continue语句基本语法
continue是C语言循环控制语句,仅用于while/for/do-while循环中,核心作用是跳过本次循环剩余代码,直接进入下一次循环条件判断,不终止整个循环。
基本格式:
// while循环中continue的标准格式
while (条件表达式) {
// 循环体代码
if (跳过条件) {
continue; // 满足跳过条件时,跳过后续代码,回到条件判断
}
// 被跳过的代码(仅当跳过条件不满足时执行)
循环变量更新;
}
核心规则:
| 组成部分 |
要求 |
示例 |
注意事项 |
| 使用位置 |
必须在循环体内部 |
while循环体中if判断内 |
循环外使用会报错 |
| 执行逻辑 |
跳过后续代码,回到条件判断 |
if(i%2==0) continue; |
不会终止循环,仅跳过单次 |
| 循环变量更新 |
需放在continue前(或避免被跳过) |
i++; continue; |
更新语句被跳过会导致死循环 |
#include
int main() {
// 示例:输出1-5的奇数(跳过偶数)
int i = 0;
while (i < 5) {
i++; // 循环变量更新放在continue前,避免死循环
if (i % 2 == 0) {
continue; // 跳过偶数,直接回到while条件判断
}
printf("%d ", i); // 仅奇数会执行此输出
}
return 0;
}
执行流程:
1. 初始化循环变量 → 2. 判断循环条件 → 3. 执行循环体代码 → 4. 满足跳过条件则执行continue(跳过后续代码) → 5. 回到步骤2 → 6. 不满足跳过条件则执行剩余代码 → 7. 更新循环变量 → 回到步骤2
二、continue与break核心对比(高频考点)
| 特性 |
continue语句 |
break语句 |
| 核心作用 |
跳过本次循环剩余代码,进入下一次判断 |
终止整个循环,跳出循环体 |
| 循环终止性 |
不终止循环,循环仍会继续 |
立即终止循环,循环结束 |
| 执行后去向 |
回到循环条件判断处 |
跳出循环体,执行循环后代码 |
| 死循环风险 |
跳过循环变量更新时会导致死循环 |
无(本身是终止循环) |
| 典型场景 |
过滤数据、跳过特定条件 |
提前终止循环、条件退出 |
对比示例:
#include
int main() {
// continue示例:跳过偶数,输出1-5奇数
int i = 0;
printf("continue示例输出:");
while (i < 5) {
i++;
if (i % 2 == 0) {
continue;
}
printf("%d ", i);
}
printf("\n");
// break示例:遇到偶数终止循环
i = 0;
printf("break示例输出:");
while (i < 5) {
i++;
if (i % 2 == 0) {
break;
}
printf("%d ", i);
}
return 0;
}
运行结果:
continue示例输出:1 3 5
break示例输出:1
三、continue语句常见使用场景(高频考点)
1. 过滤特定数值(如跳过偶数/奇数)
最核心考点,需掌握循环变量更新位置与continue的配合:
#include
int main() {
// 输出1-10的所有奇数(跳过偶数)
int i = 0;
while (i < 10) {
i++;
if (i % 2 == 0) {
continue; // 跳过偶数,直接进入下一次判断
}
printf("%d ", i);
}
// 输出:1 3 5 7 9
return 0;
}
2. 跳过特定条件(如跳过负数、跳过0)
条件型循环中使用continue过滤无效数据:
#include
int main() {
// 输入数字,累加正数,跳过负数和0
int num, sum = 0;
printf("请输入数字(输入999结束):\n");
while (1) {
scanf("%d", &num);
if (num == 999) {
break; // 终止循环
}
if (num <= 0) {
continue; // 跳过负数/0,不参与累加
}
sum += num;
}
printf("正数累加和:%d\n", sum);
return 0;
}
3. 跳过循环体部分代码(保留核心逻辑)
仅执行满足条件的核心代码,跳过次要逻辑:
#include
int main() {
// 输出1-20中能被3整除的数,跳过其他数的输出
int i = 0;
while (i < 20) {
i++;
if (i % 3 != 0) {
continue; // 跳过不能被3整除的数的输出
}
printf("能被3整除:%d\n", i);
}
return 0;
}
四、continue语句常见错误(高频考点)
- 循环变量更新被跳过:continue放在循环变量更新前,导致变量不更新,触发死循环
- 循环外使用continue:语法错误,编译器直接报错
- 混淆continue与break:误将continue当作终止循环使用,逻辑错误
- 跳过条件逻辑错误:跳过条件写反(如i%2==1时continue,导致跳过奇数)
// 错误示例1:死循环(continue跳过i++)
#include
int main() {
int i = 1;
while (i <= 5) {
if (i % 2 == 0) {
continue; // 跳过i++,i永远为2,死循环
}
printf("%d ", i);
i++;
}
return 0;
}
// 错误示例2:循环外使用continue(语法错误)
#include
int main() {
continue; // 报错:continue statement not in loop
int i = 1;
while (i <= 5) {
printf("%d ", i);
i++;
}
return 0;
}
例题精选(高频考点)
例题1:基础使用(跳过偶数输出奇数)
使用while+continue输出1-10的奇数,掌握continue核心语法(高频考点)。
#include
int main() {
int i = 0;
while (i < 10) {
i++;
if (i % 2 == 0) {
continue; // 跳过偶数
}
printf("%d ", i);
}
return 0;
}
运行结果:
1 3 5 7 9
例题2:易错点(循环变量更新位置)
分析含continue的循环执行结果,掌握循环变量更新位置的易错点(高频考点)。
#include
int main() {
int i = 0;
while (i < 5) {
if (i % 2 == 0) {
continue; // 跳过i++,i永远为0,死循环
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
程序进入死循环,无任何输出(i始终为0,满足i%2==0,continue跳过i++)
例题3:数据过滤(累加1-100的奇数和)
使用while+continue实现数据过滤,计算1-100所有奇数的累加和(实战高频题)。
#include
int main() {
int i = 0, sum = 0;
while (i < 100) {
i++;
if (i % 2 == 0) {
continue; // 跳过偶数,不参与累加
}
sum += i;
}
printf("1-100奇数和:%d\n", sum);
return 0;
}
运行结果:
1-100奇数和:2500
例题4:条件跳过(输入数字过滤负数)
输入多个数字,仅计算正数的平均值,跳过负数和0(实战应用题)。
#include
int main() {
int num, count = 0;
float sum = 0;
printf("请输入数字(输入-999结束):\n");
while (1) {
scanf("%d", &num);
if (num == -999) {
break; // 终止循环
}
if (num <= 0) {
continue; // 跳过负数/0
}
sum += num;
count++;
}
if (count > 0) {
printf("正数平均值:%.2f\n", sum / count);
} else {
printf("未输入有效正数\n");
}
return 0;
}
运行示例:
请输入数字(输入-999结束):
10
-5
20
0
30
-999
正数平均值:20.00
例题5:综合应用(跳过特定值输出)
输出1-20中除了3的倍数以外的所有数,掌握continue的综合应用(高频考点)。
#include
int main() {
int i = 0;
while (i < 20) {
i++;
if (i % 3 == 0) {
continue; // 跳过3的倍数
}
printf("%d ", i);
}
return 0;
}
运行结果:
1 2 4 5 7 8 10 11 13 14 16 17 19 20
例题6:考点辨析(continue vs break)
对比分析含continue和break的循环输出结果,掌握核心区别(必考考点)。
#include
int main() {
// 示例1:continue
int i = 1;
printf("continue示例:");
while (i <= 5) {
if (i == 3) {
i++; // 必须更新,否则死循环
continue;
}
printf("%d ", i);
i++;
}
printf("\n");
// 示例2:break
i = 1;
printf("break示例:");
while (i <= 5) {
if (i == 3) {
break;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果:
continue示例:1 2 4 5
break示例:1 2