欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

矩阵式螺旋输出 博客分类: 算法 算法 

程序员文章站 2024-03-15 20:55:26
...

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

#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);
}
相关标签: 算法