Skip to content

画矩形

https://programming.pku.edu.cn/problem/7f89efad1537471fae528e9c88601ee6/

根据参数,画出矩形。

关于输入

输入由多行组成,每行四个参数:前两个参数为整数,依次代表矩形的高和宽(高不少于3行,宽不少于5行);第三个参数是一个字符,表示用来画图的矩形符号;第四个参数为1或0,0代表空心,1代表实心。 当用户输入0时表示输入结束。

关于输出

输出画出的图形

例子输入

6 5 * 1
7 7 @ 0
0

例子输出

*****
*****
*****
*****
*****
*****
@@@@@@@
@     @
@     @
@     @
@     @
@     @
@@@@@@@

提示信息

对于一个题里有多组测试数据的题目,可以读取一组测试数据后直接输出该组的运行结果,不必把多组测试数据储存起来后一起输出。

从标准输入读取多行,每行格式如 H W C F,当遇到单独一行 0 时结束。F1 表示实心,0 表示空心。输出各个矩形,矩形之间不额外插入空行(与题目样例一致)。

cpp
import sys

def draw_rectangle(h, w, ch, filled):
    # h >= 3, w >= 5(题目保证),ch 为单字符,filled 为 0/1
    line_full = ch * w
    if filled:
        for _ in range(h):
            print(line_full)
    else:
        print(line_full)                 # 第一行
        middle = ch + ' ' * (w - 2) + ch
        for _ in range(h - 2):
            print(middle)               # 中间行
        print(line_full)                 # 最后一行

def main():
    data = sys.stdin.read().splitlines()
    for line in data:
        s = line.strip()
        if not s:
            continue
        if s == '0':
            break
        parts = s.split()
        if len(parts) < 4:
            # 忽略格式错误的行(也可抛错),这里跳过
            continue
        try:
            h = int(parts[0])
            w = int(parts[1])
            ch = parts[2][0] if parts[2] else '#'
            filled = int(parts[3]) != 0
        except:
            continue
        draw_rectangle(h, w, ch, filled)

if __name__ == "__main__":
    main()