把前三讲的零件拼成完整程序,再吃透二级编程题的四大题型套路。考前看这一讲收口。
#include <bits/stdc++.h> // 万能头文件
using namespace std;
int main() {
int n;
cin >> n; // 1. 读入
// 2. 处理(循环 / 判断 / 计算)
cout << n << "\n"; // 3. 输出
return 0;
}
cin >> a >> b;。for(int i=0;i<n;i++) cin >> a[i];。"\n" 或 endl;空格分隔就输出 " "。int a[100]; // 一维:a[0]..a[99]
int g[20][20]; // 二维:g[行][列]
for (int i = 0; i < n; i++) cin >> a[i]; // 读一维
for (int i = 0; i < n; i++) // 读二维
for (int j = 0; j < m; j++) cin >> g[i][j];
关键:想清楚第 i 行要打印什么、打印几个,把“列数”用 i 表示出来。
for (int i = 1; i <= 4; i++) { // 第 i 行
for (int j = 1; j <= i; j++) // 第 i 行有 i 个星
cout << "* ";
cout << "\n";
}
规律:第 i 行星星个数 = i,所以内层 j <= i。
int n = 4;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) cout << " "; // 先打空格
for (int j = 1; j <= 2*i - 1; j++) cout << "*"; // 再打星
cout << "\n";
}
#include <iomanip>
cout << setw(3) << x; // x 右对齐占 3 格(蛇形方阵会用)
// 或者用 printf("%3d", x);
“模拟”题不需要巧思,题目怎么说,代码就怎么写,按规则一轮轮执行即可。
long long n; cin >> n;
while (n != 1) {
if (n % 2 == 1) n = n * 3 + 1; // 奇数
else n = n / 2; // 偶数
cout << n << " ";
}
中间值可能很大,用 long long 更稳。
| 题型 | 怎么认出 | 套路 / 模板 |
|---|---|---|
| 数位处理 | 对一个数的“每一位”做事;数字统计、各位和、回文 | while(x>0){ ...x%10...; x/=10; }(第 3 讲) |
| 图形输出 | 要打印三角形/方阵/图案 | 二重循环;第 i 行 = 空格数 + 图案数(本讲三) |
| 枚举 | “在范围里找/数满足条件的” | for 遍历 + if 判断(第 3 讲) |
| 模拟 | 题目给一套规则,让你照做 | 把规则翻译成循环,一步步执行(本讲四) |
setw(3) 对齐)每道都独立写一遍、跑过样例再看题解。写不出先回到对应那讲复习套路。
Q1. 打印第 i 行有 i 个星的三角形,内层循环条件怎么写?
for(int j=1;j<=i;j++)。Q2. 二维数组 g[i][j] 里,i 和 j 分别代表什么?
Q3. 题目说“统计 1~n 里数字 5 出现多少次”,属于哪种题型?
%10 / /10 拆位数 5)。Q4. 让数字 x 右对齐占 3 格,用什么?
cout<<setw(3)<<x;(需 #include <iomanip>)或 printf("%3d",x);。Q5. 完整程序的三步是什么?
#include<bits/stdc++.h> → main → 读入/处理/输出 → return 0;。setw(3) 或 printf("%3d")。long long。四讲看完,把这 4 道题独立写过,二级编程题就有底气了。加油!💪