问题描述
利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式
输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。
输出格式
输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
#include<stdio.h>
#define MAX 26 //最大为26字母
char S[MAX]; //模板
int pos = 1; //记录位置
void Print(char s[],int m)
{
for(int i = 0;i < m;i++)
printf("%c",s[i]);
printf("\n");
}
void trans(char *s, int m) //进行每次转换
{
for(int i = m-1;i > 0;i--) { //向后平移
s[i] = s[i-1];
}
s[0] = S[pos]; //将s[0]更新为S中pos位置字符
pos = (pos + 1) % MAX; //更新pos,防止越界
}
int main()
{
int m, n;
char s[MAX];
scanf("%d %d",&n,&m);
for(int i = 0;i < MAX;i++) { //初始化S[MAX]
S[i] = 'A' + i;
}
for(int i = 0;i < m;i++) { //初始化s[max]
s[i] = 'A' + i;
}
Print(s,m);
for(int i = 1;i < n;i++) {
trans(s,m);
Print(s,m);
}
}