/* 在Windows的控制台环境中,所有的字符都是等宽的,默认情况下窗口中每行有80个字符,每个屏幕有25行,组成了一个字符矩阵。
利用控制台的这个特点,我们可以在控制台上绘制简单的图形。下面给出了一个5*7的图形的例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
找出这个图形的特点,给出n和m,绘制一个n*m的图形。
输入格式
输入包含两个数n, m,用一个空格分隔。1<=n,m<=24
输出格式
输出与上图类似的一个n*m的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
*/
import java.util.*;
public class Main1 {
public static String tmps = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static int n, m;
public static char[] tmp;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
// 1<=n,m<=24
tmp = tmps.substring(0, m).toCharArray();
if (n > m) {
// 当n>m时,先执行左加,右减
if (n > m) {
mdan(m);
n = n - m;
}
// 最后n<=m,剩余的都是加
mdn(n);
} else if (m >= n) {
mdan(n);
}
}
public static void mdn(int tn) {
//
for (int i = 1; i <= tn; i++) {
for (int j = 0; j < tmp.length; j++) {
tmp[j] = (char) ((int) tmp[j] + 1);
if (tmp[j] > 'Z') {
tmp[j] = 'A';
}
System.out.print("" + tmp[j]);
}
System.out.println();
}
}
// 当n<=m时,右边减,左边加
public static void mdan(int n) {
for (int i = 1; i <= n; i++) {
// 左边加
for (int j = 0; j < i % m; j++) {
System.out.print("" + tmp[j]);
tmp[j] = (char) ((int) tmp[j] + 1);
if (tmp[j] > 'Z') {
tmp[j] = 'A';
}
}
// 右边减
for (int j = i % m; j < tmp.length; j++) {
System.out.print("" + tmp[j]);
if (i != m)
tmp[j] = (char) ((int) tmp[j] - 1);
if (tmp[j] < 'A') {
tmp[j] = 'Z';
}
}
// 换行
System.out.println();
}
}
}
画长方形
最新推荐文章于 2023-10-29 13:19:27 发布