【GESP】C++二级练习 luogu-B2083, 画矩形
GESP二级练习,多层循环嵌套练习,难度★✮☆☆☆。
luogu-B2083 画矩形
题目要求
题目描述
根据输入的四个参数:$a,b,c,f$ 参数,画出对应的矩形。
前两个参数 $a,b$ 为整数,依次代表矩形的高和宽;
第三个参数 $c$ 是一个字符,表示用来填充的矩形符号;
第四个参数 $f$ 为整数,$0$ 代表空心,否则代表实心。
具体例子请见样例。
输入格式
第一行:a,b,c,f。
输出格式
一个矩形。
样例输入 #1
1
7 7 @ 0
样例输出 #1
1
2
3
4
5
6
7
@@@@@@@
@ @
@ @
@ @
@ @
@ @
@@@@@@@
数据范围
$3 \le a \le 100$。
$5 \le b \le 100$。
保证 $c$ 是一个可见的字符(ASCII 码在 $[33,126]$ 内)。
$0 \le f \le 1$。
题目分析
- 读取输入的四个参数:$a,b,c,f$ 参数,画出对应的矩形。
- 嵌套两层循环,外层循环控制行数,内层循环控制列数。
- 在内层循环中,判断当前位置是否在矩形的边界上,如果是,输出字符$c$,否则根据$f$的值输出字符$c$或空格。
- 每行输出完毕后,换行继续下一行的输出。
- 循环结束后,输出的结果即为所求的矩形。
示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <cstdio>
#include <iostream>
using namespace std;
int main() {
int a, b, f; // 定义整数变量a、b和f
char c; // 定义字符变量c
cin >> a >> b >> c >> f; // 从输入流中读取a、b、c和f的值
for (int i = 0; i < a; i++) { // 外层循环,控制行数
for (int j = 0; j < b; j++) { // 内层循环,控制列数
if (i == 0 || i == a - 1 || j == 0 || j == b - 1) { // 如果当前位置在边界上
cout << c; // 输出字符c
} else {
if (f == 1) { // 如果f为1
cout << c; // 输出字符c
} else {
cout << " "; // 否则输出空格
}
}
}
cout << endl; // 换行,结束当前行的输出
}
return 0;
}
所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code
GESP各级别考纲要点、知识拓展和练习题目清单详见C++学习项目主页
“luogu-”系列题目已加入洛谷Java、C++初学团队,作业清单,可在线评测,团队名额有限,欢迎加入。
“bcqm-”系列题目可在编程启蒙题库进行在线评测。
本文由作者按照 CC BY 4.0 进行授权