字母旋转方阵

题目描述

给定两个整数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 a[100][100];
    int i,nx,ny,x=0,y=0;
    int dy[]={1,0,-1,0};
    int dx[]={0,1,0,-1};
    int k=0,d=65;
    scanf("%d%d",&m,&n);
    for(i=0;i<m*n;i++)
    {
        a[x][y]=i+d;
        nx=x+dx[k];
        ny=y+dy[k];
        if(nx<0||nx==m||ny<0||ny==n||a[nx][ny]!=0)
            {
                k=(k+1)%4;
                nx=x+dx[k];
                ny=y+dy[k];
            }
            x=nx;
            y=ny;
        if(i+d==90)
        d=d-26;

    }
    for(i=0;i<m;i++)
        {
            for(k=0;k<n;k++)
       {

           printf(" %c",a[i][k]);
           }
       if(i<m-1) printf("\n");
        }
    return 0;
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/OJZFY/article/details/49966055
上一篇又见回文
下一篇矩阵
想对作者说点什么? 我来说一句

C语言写的旋转方阵问题

2010年05月01日 916B 下载

没有更多推荐了,返回首页

关闭
关闭