题目描述
给定两个整数M,N,生成一个M*N的矩阵,矩阵中元素取值为A至Z的26个字母中的一个,A在左上角,其余各数按顺时针方向旋转前进,依次递增放置,当超过26时又从A开始填充。例如,当M=5,N=8时,矩阵中的内容如下:
A B C D E F G H
V W X Y Z A B I
U J K L M N C J
T I H G F E D K
S R Q P O N M L
输入
M为行数,N为列数,其中M,N都为大于0的整数。
输出
分行输出相应的结果,注意每行开始有1个空格,相邻两个字母之间有1个空格
样例输入
4 9
样例输出
A B C D E F G H I
V W X Y Z A B C J
U J I H G F E D K
T S R Q P O N M L
参考代码
#include <stdio.h>
int main()
{
int m, n;
scanf("%d %d",&m,&n);
int flag=0;
int num=0,nu=1;
int i=0,j=0;
char s='A';
char a[81][81];
a[0][0]=s;
while(flag<m*n-1)
{
switch(nu%4)
{
case 1:
++j;
if(j==n-num-1)
{
nu++;
}
break;
case 2:
++i;
if(i==m-num-1)
{
nu++;
}
break;
case 3:
--j;
if(j==num)
{
nu++;
}
break;
case 0:
--i;
if(i==num+1)
{
nu++;
num++;
}
break;
}
if(++s=='Z'+1)
s='A';
a[i][j]=s;
flag++;
}
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
if(j!=n-1)
printf(" %c",a[i][j]); else
printf(" %c",a[i][j]);
}
printf("n");
}
}
解析
暂无