【GESP】C++二级真题 luogu-B3837, [GESP202303 二级] 画三角形
GESP二级真题,多层循环嵌套和ASCII练习,难度★✮☆☆☆。
luogu-B3837 [GESP202303 二级] 画三角形
题目要求
题目描述
输入一个正整数 $n$,请使用大写字母拼成一个这样的三角形图案(参考样例输入输出):三角形图案的第 $1$ 行有 $1$ 个字母,第 $2$ 行有 $2$ 个字母,以此类推;在三角形图案中,由上至下、由左至右依次由大写字母 $\texttt{A}-\texttt{Z}$ 填充,每次使用大写字母 $\texttt Z$ 填充后,将从头使用大写字母 $\texttt A$ 填充。
输入格式
输入一行,包含一个正整数 $n$。约定 $2 \le n \le 40$。
输出格式
输出符合要求的三角形图案。注意每行三角形图案的右侧不要有多余的空格。
样例输入 #1
1
3
样例输出 #1
1
2
3
A
BC
DEF
样例输入 #2
1
7
样例输出 #2
1
2
3
4
5
6
7
A
BC
DEF
GHIJ
KLMNO
PQRSTU
VWXYZAB
题目分析
- 读取输入的正整数n,表示三角形图案的行数。
- 使用两层循环来输出三角形图案。外层循环控制行数,内层循环控制列数。
- 在内层循环中,使用ASCII码来输出对应的大写字母。从’A’开始,每次输出后,字母向后移动一个。例如,如果当前输出的是’A’,下一个输出将是’B’,以此类推。
- 当输出到达’Z’时,下一个字母应该是’A’,因此需要特殊处理。可以通过模运算(%)来实现循环输出,例如,当前输出的是’Z’,下一个输出将是’A’,以此类推。
- 每行输出完成后,换行以开始下一行的输出。换行符(\n)用于在每行输出完成后,移动到下一行继续输出。
- 重复步骤2-5,直到输出了n行。外层循环控制行数,内层循环控制列数,通过这种方式,可以输出一个完整的三角形图案。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
int main() {
int n; // 读取输入的正整数n
cin >> n; // 从输入流中读取n的值
int start_char = 'A'; // 初始化起始字符为'A'
int idx = 0; // 初始化索引为0
for (int i = 1; i <= n; i++) { // 外层循环控制行数
for (int j = 1; j <= i; j++) { // 内层循环控制列数
int current_ascii = start_char + idx % 26; // 计算当前字符的ASCII码
cout << (char)current_ascii; // 输出当前字符
idx++; // 索引自增
}
cout << endl; // 换行以开始下一行的输出
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权