问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定
1 <= n, m <= 26。
简单说:给你两个参数,就叫你写一个循环。
参数m:表示每行显示m个字母
参数n:表示循环n次
#include <stdio.h>
int main()
{
//1.获取 n,m
int n,m;
printf("请输入n:");scanf("%d",&n);
printf("请输入m:");scanf("%d",&m);
//2.获取需要打印的字母
char letter[m];
for(int i = 0 ; i < m; i++){
letter[i] = (char)('A' + i);
}
//3.打印n行
for(int i = 0 ; i < n ; i++){
//4.打印m列
//列的前一半
for(int j = i ; j > 0 ; j--){
printf("%C",letter[j]);
}
//列的后一半
for(int j = 0 ; j < m-i ; j++){
printf("%C",letter[j]);
}
printf("\n");
}
return 0;
}
类似
\\
\\
\\
横向 1234567 m = 7
纵向 12345 n = 5
12345
21234
32123
43212
int m = 30,n = 30;
// if(n < 1 || m > 26) return;
char[] letter = new char[26];
for(int i = 0 ; i < 26; i++){
letter[i] = (char)('A' + i);
}
for(int i = 0 ; i < n ; i ++){
int temp = 0;//记录输出个数
for(int j = i; j > 0 && temp < m; j --,temp++){
System.out.print(letter[j % 26]);
}
for(int j = 0; j < m - i && temp < m ; j++,temp++){
System.out.print(letter[j % 26]);
}
System.out.println();
}
先反向输出 行数 - 1 个 字符
再正向输出 m - 行数 + 1 个字符
别的我说不出 数学不好