作业帮 > 综合 > 作业

急求!C语言的蛇形方阵!

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/18 07:22:06
急求!C语言的蛇形方阵!
1 2 6 7 15 16
3 5 8 14 17 26
4 9 13 18 25 27
10 12 19 24 28 33
11 20 23 29 32 34
21 22 30 31 35 36
如上图,输入一个N,输出N行N列的蛇形方阵,
求思路,最好附上代码(最好有注释)!
多谢了!
#include <stdio.h> 
#define N 5 /*可改变数组大小*/ 
#define M 0 /*改变蛇形数组 方向*/ 
/* 

M = 0 
1 3 4 
2 5 8 
6 7 9 

M = 1 
1 2 6 
3 5 7 
4 8 9 

*/ 
void main() 

int x=0,y=0,b,k=1,i,j,w=1; 
int s[N][N]; 
b = N*N; 
s[0][0]=1; 
for(i=2; i<=b; i++) 

if((y == 0) && (x != (N-1)) && (x%2 == (0+M)%2)) 

x++; 
k = 1; 
w = 0; 

if((x == 0) && (y != (N-1)) && (y%2 == (1+M)%2)) 

y++; 
k = 0; 
w = 0; 


if(x == (N-1) && (y%2 == ((N%2+1)%2+M)%2)) 

y++; 
k = 1; 
w = 0; 

if(y == (N-1) && (x%2 == (N%2+M)%2) && !( (x == N-1) && (y == N-1) ) ) 

x++; 
k = 0; 
w = 0; 

if((w == 1) && (k == 1)) 

x--; 
y++; 

if((w == 1) && (k == 0)) 

x++; 
y--; 

s[x][y] = i; 
w = 1; 

for(i=0; i<N; i++) 

for(j=0; j<N; j++) 

printf("%d\t",s[i][j]); 

printf("\n"); 
}