1. 项目概述
作为一名从大学就开始在洛谷刷题的C语言老手,我深知循环结构是编程入门阶段最难啃的骨头之一。最近刚带学弟学妹刷完洛谷【入门3】循环结构的21道题,发现很多新手容易在for循环的边界条件、while的终止判断上反复踩坑。这篇总结会重点拆解题单中的典型题目,分享我五年刷题积累的循环结构调试技巧。
循环结构之所以让新手头疼,是因为它需要同时控制三个关键要素:循环变量的初始化、循环条件的判断、循环变量的更新。任何一环出错都会导致死循环或逻辑错误。以P5721【数字直角三角形】为例,很多同学第一次写会纠结外层循环用i++还是i--,内层循环的终止条件该用j<=n还是j<=i。
2. 核心题目解析
2.1 数字图形类题目
这类题目通常要求用循环打印特定图案,比如P5721数字直角三角形、P5722数字正方形等。核心要点是:
- 外层循环控制行数
- 内层循环控制每行的元素
- 注意循环变量与行列数的关系
以P5721为例,正确的双重循环写法应该是:
c复制for(int i=1; i<=n; i++) { // 控制行数
for(int j=1; j<=i; j++) { // 控制每列数字
printf("%02d", cnt++);
}
printf("\n");
}
易错点:忘记在内层循环后换行,或者数字格式控制不当导致对齐问题
2.2 数列求和类题目
P5723【质数口袋】这类题目需要结合循环和条件判断。解题步骤:
- 用循环遍历可能的质数
- 对每个数进行质数判断
- 累加符合要求的质数
关键代码段:
c复制for(int num=2; ; num++) {
if(is_prime(num) && sum+num <= L) {
sum += num;
count++;
} else if(sum+num > L) {
break;
}
}
经验:设置合理的循环终止条件,避免无限循环。质数判断可以单独封装成函数。
2.3 条件终止类题目
P1424【小鱼的航程】这类题目需要特别注意循环终止条件的设置。典型错误是:
c复制whil
