1. C语言循环专题:10道必做练习题解析
作为一名有多年C语言教学经验的开发者,我深知循环结构是编程基础中的重中之重。今天我将分享10道精心设计的循环练习题,帮助大家从入门到精通掌握C语言的循环结构。这些题目涵盖了for、while、do-while循环以及break、continue等关键知识点,每道题都配有详细解析和可运行的代码示例。
2. 题目详解与实现
2.1 数字累加器:过滤无效数据
问题场景:在实际数据处理中,我们经常需要过滤掉无效或错误的数据。这道题模拟了一个班级年龄统计的场景,要求只累加有效的正数年龄。
核心知识点:
- for循环的基本用法
- continue语句的使用场景
- 输入验证的基本方法
实现细节:
c复制#include <stdio.h>
int main() {
int n, age, sum = 0;
scanf("%d", &n); // 读取学生人数
for (int i = 0; i < n; i++) {
scanf("%d", &age);
if (age <= 0) {
continue; // 跳过无效年龄
}
sum += age; // 累加有效年龄
}
printf("%d\n", sum);
return 0;
}
注意事项:
- 输入验证是编程中的重要环节,实际开发中应该考虑更多边界情况
- continue语句会跳过当前迭代的剩余部分,直接进入下一次循环
- 变量初始化很重要,sum必须初始化为0,否则结果不可预测
2.2 寻找第一个能被7整除的数:break的妙用
实际应用:这类问题在游戏开发、事件处理等场景中很常见,需要在满足条件时立即终止循环。
解题思路:
- 使用无限循环while(1)持续接收输入
- 遇到0时用break退出循环
- 发现能被7整除的数时立即输出并用break退出
优化版本:
c复制#include <stdio.h>
int main() {
int num;
while (scanf("%d", &num) && num != 0) {
if (num % 7 == 0) {
printf("%d\n", num);
return 0; // 直接结束程序
}
}
printf("NO\n");
return 0;
}
经验分享:
- 使用return 0可以直接结束程序,比设置标志变量更简洁
- 输入和判断可以合并到while条件中,使代码更紧凑
- 实际开发中要考虑输入错误的情况,这里简化了处理
2.3 数字金字塔:嵌套循环的经典应用
问题分析:打印图形是理解嵌套循环的绝佳练习。数字金字塔需要考虑三个部分:前导空格、递增数字和递减数字。
实现要点:
c复制#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
// 打印前导空格
for (int j = 0; j < n - i; j++)
printf(" ");
// 打印递增数字
for (int j = 1; j <= i; j++)
printf("%d", j);
// 打印递减数字
for (int j = i - 1; j >= 1; j--)
printf("%d", j);
printf("\n");
}
return 0;
}
调试技巧:
- 可以先固定i的值,单独调试内层循环
- 使用小数值(如n=3)手动验证输出
- 注意空格数量对图形对齐的影响
