for循环例题专题
一、语法
for 循环用于"已知大概循环次数"的重复任务。
基本语法:
cpp
for (初始语句; 条件表达式; 变化语句) {
循环体;
}
示例:输出 1 到 5
cpp
for (int i = 1; i <= 5; i++) {
cout << i << " ";
}
执行过程:
- 先执行
int i = 1(只执行一次); - 判断
i <= 5,成立就进入循环体; - 循环体执行后,执行
i++; - 再次判断条件,直到条件不成立。
初学者注意点
- 循环变量初始化、条件、步进要互相匹配。
- 小心边界:
< n和<= n含义不同。 - 图形题常见规律是"第 i 行输出多少个字符"。
二、例题详解
例题1:数字直角三角形
- 题目链接:P5721 数字直角三角形
题目描述
给出 n,输出一个直角边长度为 n 的数字直角三角形。
所有数字都按 2 位输出,不足 2 位前导补 0。
输入格式
输入一个正整数 n。
输出格式
按题意输出数字直角三角形。
数据范围
1 <= n <= 13。
输入输出样例
输入:
text
5
输出:
text
0102030405
06070809
101112
1314
15
思路讲解
这题每一行输出的数字个数在减少:
- 第 1 行输出
n个; - 第 2 行输出
n-1个; - ...
所以可以把"行号"作为 for 循环变量,设为 i。
再用第二层循环控制每行输出数量。
同时用 idx 记录当前要输出的数字,并在每次输出后 idx++。
参考代码
cpp
#include <bits/stdc++.h>
using namespace std;
int n;
int main() {
cin >> n;
int idx = 1;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n - i; j++) {
if (idx < 10) {
cout << '0' << idx;
} else {
cout << idx;
}
idx++;
}
cout << endl;
}
return 0;
}
例题2:数列求和
- 题目链接:P5722 数列求和
题目描述
给定一个正整数 n,求 1+2+3+...+n 的值。
输入格式
输入一个正整数 n。
输出格式
输出一个整数,表示 1 到 n 的和。
输入输出样例
输入:
text
100
输出:
text
5050
思路讲解
这题是 for 的标准入门题。
定义累加变量 s=0,然后让循环变量 i 从 1 走到 n,每次把 i 加到 s 里:
- 第 1 轮:
s += 1 - 第 2 轮:
s += 2 - ...
- 第 n 轮:
s += n
循环结束后输出 s 即可。
参考代码
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
int s = 0;
for (int i = 1; i <= n; i++) {
s += i;
}
cout << s;
return 0;
}