C语言编写一个回型矩阵

Python018

C语言编写一个回型矩阵,第1张

#include<stdio.h>

#define M 10

int data[M][M]

void max()

{

int tem

int ctat

int i,j

i=j=0

tem=ctat=1

while(tem<M*M) //tem是1到M*M值变量

{//把方向分为4中状态 即 ctat 变量 上 下 左 右 (1 2 3 4)

data[i][j]=tem

switch(ctat)

{

case 1:

{

if(j+1<M&&0==data[i][j+1])//第一种状态右

{

tem++

j++

}

else

ctat=2

}

break

case 2:

{

if(i+1<M&&0==data[i+1][j])//下

{

tem++

i++

}

else

ctat=3

}

break

case 3:

{

if(j-1>=0&&0==data[i][j-1]) //左

{

tem++

j--

}

else

ctat=4

}

break

case 4:

{//上

if(i-1>=0&&0==data[i-1][j])

{

tem++

i--

}

else

ctat=1//又上 状态1 依次 循环 至矩阵最后第2个值M*M-1;//最后第一个值有 本函数最后赋予

}

break

default:

break

}

}

data[i][j]=tem//赋予最后一个 即 data[i][j]=M*M

}

void main()

{

int i,j

max()

for(i=0i<Mi++)

{

for(j=0j<Mj++)

printf("%4d",data[i][j])

printf("\n")

}

getch()}

{

int c,m,n,i,j

int t=0

int a[20][20]

scanf("%d%d",&m,&n)

if(m>n)

c=n/2+1

else

c=m/2+1

for(i=0i<ci++)

{

for(/*j=0*/j=ij<n-i-1j++)

{

t++

a[i][j]=t

}

for(j=ij<m-i-1j++)

{

t++

a[j][n-i-1]=t

}

for(j=n-i-1j>ij--)

{

t++

a[m-i-1][j]=t

}

for(j=m-i-1j>ij--)

{

t++

a[j][i]=t

}

}

for(i=0i<mi++)

for(j=0j<nj++)

{

printf("%d ", a[i][j])

if(((j+1)%n) == 0)

printf("\n")

}

}

line12 我注释掉你的一部分,后边换成修改后的;看你代码的意思是按回环依次复制,那么外侧一环赋值完成后,进入内一层环的时候,i和j都要+1的;你的i+1了,但j没有。