531 字
3 分钟
GESP 2026年C++二级编程题解析
202603-1 数数
题目描述
给定一个数,如果数中恰好存在3个2,则被称为美丽的数字。
现给定两个数 ,其中 (),请输出它们之间(含端点)存在多少个美丽的数。
输入格式
输入一行两个整数 。
输出格式
输出一个整数,表示 到 之间美丽的数有多少个。
样例输入
2221 2223样例输出
2数据范围
代码解析
这道题是一道典型的数位剥离问题,我们可以用一个循环去遍历 到 之间的所有数,对于每个数,我们用一个循环去遍历它的每一位,统计其中 2 的个数,若个数为 3 则答案加一,注意不要直接用
i去剥离,循环结束后i变成 0,导致死循环。
#include <bits/stdc++.h>using namespace std;int main() {
int a, b, ans = 0; cin >> a >> b; for (int i = a; i <= b; i++) { int cnt = 0; int j = i; while (j != 0) { if (j % 10 == 2) cnt++; j /= 10; } if (cnt == 3) ans++; } cout << ans;
return 0;}202603-2 画画
题目描述
给你一个单整数 ,请输出一个 行 列的方阵。方阵的四个顶点是 +,第一行和第 行的非顶点位置是 -,第 1 列和第 列非顶点位置是 |,中间位置是 *。
输入格式
输入一个单整数 。
输出格式
行 列的方阵。
样例输入
5样例输出
+---+|***||***||***|+---+数据范围
代码解析
一道二级常考的画图问题,注意观察矩形中各种符号的规律即可,第一行和最后一行是
+和-,其他行是|和*,分开处理即可。
#include <bits/stdc++.h>using namespace std;int main() {
int n; cin >> n; for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) if (i == 1 || i == n) { if (j == 1 || j == n) cout << '+'; else cout << '-'; } else { if (j == 1 || j == n) cout << '|'; else cout << '*'; } cout << endl; }
return 0;} GESP 2026年C++二级编程题解析
https://yezi.press/posts/gesp/gesp-cpp2-2026/
陕公网安备61010302001363号