输出一个m行n列的图形

实验四 13.输出一个m行n列的由*组成边框的长方形。例如若m为4、n为6时,则输出:

要求:m和n从键盘输入,且m≥2 、n≥2,下述两种算法都可以实现,也可以用其他方法。

算法1:第1行和第m行输出n个。其他行先输出一个,再输出n-2个空格,最后输出一个*。每行结尾输出一个换行符。

算法2:将上述图形看成由和空格构成的长方形点阵。做一个双重循环,外循环m行,内循环n列,当行号为1或行号为m或列号为1或列号n时输出,其他情况输出空格。每行结尾输出一个换行符。

img

供参考:

#include <stdio.h>
int main()
{
    int m = 4, n = 6, i, j;
    scanf("%d%d", &m, &n);
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) 
            i % (m - 1) == 0 || j % (n - 1) == 0 ? printf("*") : printf(" ");
        printf("\n");
    }
    return 0;
}

JAVA代码


import java.util.Scanner;

public class RectanglePattern1 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入长方形的行数m:");
        int m = scanner.nextInt();
        System.out.print("请输入长方形的列数n:");
        int n = scanner.nextInt();
        
        // 输出第一行
        for (int i = 1; i <= n; i++) {
            System.out.print("*");
        }
        System.out.println();
        
        // 输出中间的行
        for (int i = 2; i <= m - 1; i++) {
            System.out.print("*");
            for (int j = 2; j <= n - 1; j++) {
                System.out.print(" ");
            }
            System.out.println("*");
        }
        
        // 输出最后一行
        for (int i = 1; i <= n; i++) {
            System.out.print("*");
        }
        System.out.println();
    }
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^