画矩形

57 阅读2分钟

画矩形:

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

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

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

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

具体例子请见样例。

输入

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

输出

一个矩形。

示例:

示例 1:

输入:

7 7 @ 0

输出:

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

提示:

3≤a≤1003≤a≤100。

5≤b≤1005≤b≤100。

cc 是一个可见的字符。

0≤f≤1000≤f≤100。

代码如下:

#include <stdio.h>

int main() {
    int a, b, f;  // a:高  b:宽  f:空心/实心标识
    char c;       // 填充字符

    // 1. 输入参数(处理字符输入的缓冲区问题)
    printf("请输入矩形的高、宽、填充字符、类型(0空心/非0实心),用空格分隔:\n");
    // 注意:%c前加空格,跳过输入时的空格/换行符
    if (scanf("%d %d %c %d", &a, &b, &c, &f) != 4) {
        printf("输入格式错误!\n");
        return 1;
    }

    // 2. 验证参数合法性(高和宽至少为2,否则无法形成空心矩形)
    if (a < 2 || b < 2) {
        printf("矩形的高和宽必须大于等于2!\n");
        return 1;
    }

    // 3. 绘制矩形
    for (int i = 0; i < a; i++) {          // 遍历每一行(高)
        for (int j = 0; j < b; j++) {      // 遍历每一列(宽)
            // 实心:所有位置都填充字符
            if (f != 0) {
                printf("%c", c);
            }
            // 空心:只填充边框(第一行/最后一行/第一列/最后一列)
            else {
                if (i == 0 || i == a-1 || j == 0 || j == b-1) {
                    printf("%c", c);
                } else {
                    printf(" ");  // 内部填充空格
                }
            }
        }
        printf("\n");  // 每行结束换行
    }

    return 0;
}

运行结果如下:

(一)空心矩形:

image.png

(二)非空心矩形:

image.png