实验四 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时输出,其他情况输出空格。每行结尾输出一个换行符。
供参考:
#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();
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: