码迷,mamicode.com
首页 > 其他好文 > 详细

LoopMatrix

时间:2015-04-21 17:59:12      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>
#include <stdlib.h>

#define ALPHA_NUM 26
const char AlphaTable[ALPHA_NUM]={A,B,C,D,E,F,G,H,I,J,K,L,M,N,
                        O,P,Q,R,S,T,U,V,W,X,Y,Z};

void PrintMatrix(const int** pMatrix,int m,int n);
void GetLoopMatrix(int** pMatrix,int m,int n);
void ResetMatrix(int** pMatrix,int m,int n);

int main()
{
    int i;
    int m,n;    //回环矩阵阶数
    int **pMatrix=NULL;  //回环矩阵指针数组
    scanf("%d%d",&m,&n);

    pMatrix=(int*)malloc(sizeof(int*)*m);   //一维数组指针
    for(i=0;i<m;i++)
        *(pMatrix+i)=(int*)malloc(sizeof(int)*n);

    ResetMatrix(pMatrix,m,n);
    GetLoopMatrix(pMatrix,m,n);
    PrintMatrix(pMatrix,m,n);
    return 0;
}

void ResetMatrix(int** pMatrix,int m,int n)
{
    int i,j;
    for(i=0;i<m;i++)
        for(j=0;j<n;j++)
        *(*(pMatrix+i)+j)=0;
}

void GetLoopMatrix(int** pMatrix,int m,int n)
{
    int i,x,y,xDir,yDir,cnt;
    x=y=0;
    xDir=1;
    yDir=0;
    cnt=m*n;
    for(i=0;i<cnt;i++)
    {
        *(*(pMatrix+y)+x)=AlphaTable[i%ALPHA_NUM];
        if(x+xDir<0||y+yDir<0||x+xDir==n||y+yDir==m||(*(*(pMatrix+y+yDir)+x+xDir))!=0)    //边界处理情况
        {
            if(xDir)
            {
                yDir=xDir;
                xDir=0;
            }
            else
            {
                xDir=-yDir;
                yDir=0;
            }
        }
        x=x+xDir;
        y=y+yDir;
    }
}

void PrintMatrix(const int** pMatrix,int m,int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%c",*(*(pMatrix+i)+j));
        }
        printf("\r\n");
    }
}

 

LoopMatrix

标签:

原文地址:http://www.cnblogs.com/Karma-wjc/p/4444651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!