题目描述
给定N,输出一个N*N的矩阵,矩阵为N层,每层是一个字符,从A到Z。 比如说N=3,矩阵为
CCCCC CBBBC CBABC CBBBC CCCCC
输入
第一行是一个整数K(K≤50),表示样例数。 每个样例占1行,为一个整数N(1≤N≤26)。
输出
每个样例输出对应的矩阵,行尾没有多余的空格。
样例输入
3 1 2 3
样例输出
A BBB BAB BBB CCCCC CBBBC CBABC CBBBC CCCCC
AC代码
#include<stdio.h>
int main()
{int T;scanf("%d",&T);while(T--){int n,i,j;scanf("%d",&n);int len=2*n-1;//行数 char a[100][100]={};for(i=0;i<=len/2;i++){//上 for(j=i;j<len-i;j++){a[i][j]=n-i+'A'-1;}} for(i=1;i<=len/2;i++){//左1for(j=0;j<i;j++){a[i][j]=n-j-1+'A';}}for(i=1;i<=len/2;i++){//右1for(j=len-1;j>=len-i;j--){a[i][j]='A'+j-n+1;}}for(i=len-1;i>=len/2+1;i--){//下 for(j=len-i-1;j<=i;j++){a[i][j]='A'+i-n+1;}}for(i=len/2+1;i<len-1;i++){//左2 for(j=0;j<=n-2-i+len/2;j++){a[i][j]=n-j-1+'A';}}for(i=len/2+1;i<len-1;i++){//右2 for(j=len-1;j>=i+1;j--){a[i][j]=j-n+1+'A';}}for(i=0;i<len;i++){for(j=0;j<len;j++){printf("%c",a[i][j]);}printf("\n");}} }
解题思路:利用二维数组进行打印,分6块找规律即可。找规律要耐心啊!
如n=3时
上:CCCCC
BBB
A
下 BBB
CCCCC