矩阵式螺旋输出

//本算法采取逐圈赋值的方法,依次对每一层进行赋值

#include <stdio.h>
int add=1;
int a[100][100]={0};
void PrintCircleNum(int n);
void CircleNum(int n,int s,int m);
int main(){
int n;
while(1){
int m=1;
add=1;
printf("请输入矩阵行数n的值(n>1):");
scanf("%d",&n);
CircleNum(n,n,m);
printf("The Array matrix[%d][%d] is:/n",n,n);
PrintCircleNum(n);
}
return 1;
}
 
void PrintCircleNum(int n){
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
printf("%d/t",a[i][j]);
}
printf("/n");
}
}
 
void CircleNum(int n,int s,int m){
//n为矩阵总的行数,s为运算到的那一圈的一行的个数,m为每一圈开始的第一个元素所在的位置即a[m][m]
int i;
if(m>((n+1)/2))
return;
for(i=m;i<=(n-m+1);i++){
a[m][i]=add++;
}
for(i=m+1;i<=(n-m+1);i++){
a[i][n-m+1]=add++;
}
for(i=(n-m);i>=m;i--){
a[n-m+1][i]=add++;
}
for(i=(n-m);i>=(m+1);i--){
a[i][m]=add++;
}
CircleNum(n,n-2,m+1);
}

猜你喜欢

转载自peterhu001.iteye.com/blog/1936688