[说明]
本程序将自然数1,2,……,N2(N=5)按蛇形方式逐个顺序存入N阶矩阵。令n=N-1,则矩阵中的每一元素可用aij标记,其中i,j(0≤i,j≤n)分别为其所在行的行号和所在列的列号。蛇形方式顺序存放的方法是从an0开始、到a0n为止,依次填入由1递增的自然数,交替地对每一斜列从左上角向右下角或从右下角向左上角排列。程序的输出为:
![](https://img.ixiawen.com/uploadfile/2017/0122/20170122114433943.gif)
[程序]
#include <stdio.h>
#include <math.h>
#define SIZE.10
int a[SIZE] [SIZE],k;
void write(int n) /*输出矩阵*/
{ int i,j;
for(i=0;i<=n;i+ +){
for(j=0; j<=nj j+ +)
printf("%4d",a[i][j]);
printf("\n");
}
}
void makeline(int row_start, int col_start, int row_end) /*完成矩阵一条斜线的整数填写*/
{ int i,j, sign;
sign=( (1) > =0) 1:-1;
for(i = row_start,j = col_start; (row_end-i) * sign>=0; i+=sign,j+=sign)
a[i][j]= (2) ;
}
void makeArray(int n) /*完成矩阵每条斜线的整数填写*/
{ int d;
for(d=1;d<= (3) ;d+ +)
if(d< =n+1)
if(d%2)
makeline( (4) );
else
makeline(n+1-d,0,n);
else
if(d%2)
makeline( (5) );
else
makeline(0,d-n-1,2*n-d+1);
}
void main()
{ int n, N=5;
k=1; n=N-1;
makeArray(n);
write(n);
}