内存:128  时间:1

题目描述

给定两个整数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;
    int flag = 0;
    int num1 = 0, num2 = 1;
    int i = 0, j = 0;
    char s = 'A';
    char a[31][31];
    scanf("%d %d",&m,&n);
    a[0][0] = s;
    while(flag < m*n-1)
    {
        switch(num2%4)
        {
        case 1:
            ++j;
            if(j == n-num1-1)
            {
                num2++;
            }
            break;
        case 2:
            ++i;
            if(i == m-num1-1)
            {
                num2++;
            }
            break;
        case 3:
            --j;
            if(j == num1)
            {
                num2++;
            }
            break;
        case 0:
            --i;
            if(i == num1+1)
            {
                num2++;
                num1++;
            }
            break;
        }
        if(++s == 'Z'+1)
            s = 'A';
        a[i][j]=s;
        flag++;
    }
    for(i=0; i<m; i++)
    {
        printf(" ");
        for(j=0; j<n; j++)
        {
            if(j!=n-1)
                printf("%c ", a[i][j]);
            else
                printf("%c", a[i][j]);
        }
        printf("
");

    }

}

代码来源于互联网,仅供参考!