画矩形

GESP二级练习,多层循环嵌套练习,难度★✮☆☆☆。

luogu-B2083 画矩形

题目要求

题目描述

根据输入的四个参数:a,b,c,fa,b,c,f 参数,画出对应的矩形。

前两个参数 a,ba,b 为整数,依次代表矩形的高和宽;

第三个参数 cc 是一个字符,表示用来填充的矩形符号;

第四个参数 ff 为整数,00 代表空心,否则代表实心。

具体例子请见样例。

输入格式

第一行:a,b,c,f。

输出格式

一个矩形。

样例输入 #1

7 7 @ 0

样例输出 #1

@@@@@@@
@     @
@     @
@     @
@     @
@     @
@@@@@@@

数据范围

3a1003 \le a \le 100

5b1005 \le b \le 100

保证 cc 是一个可见的字符(ASCII 码在 [33,126][33,126] 内)。

0f10 \le f \le 1


题目分析

  1. 读取输入的四个参数:a,b,c,fa,b,c,f 参数,画出对应的矩形。
  2. 嵌套两层循环,外层循环控制行数,内层循环控制列数。
  3. 在内层循环中,判断当前位置是否在矩形的边界上,如果是,输出字符cc,否则根据ff的值输出字符cc或空格。
  4. 每行输出完毕后,换行继续下一行的输出。
  5. 循环结束后,输出的结果即为所求的矩形。

{% include custom/custom-post-content-inner.html %}

示例代码

#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;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on