不知道C语言的问题可不可以提问啊???
如果可以的话,请帮我解答下这个题目?要实现这个效果如何?
16 15 14 13
5 4 312
6 1 211
7 8 910
N*N的螺旋矩阵sdlkfj8 /*
N×N螺旋方阵
*/
#include<stdio.h>
#defineN9
static a;
void fun(int*,int*,int);
int main(int argc,char*argv[])
{ int i=0,j=0,n=0;
for(int k=1;k<=N*N;k++)
{ a=k;
fun(&i,&j,N-n-n);
if(i==0 && j==0)n++;
}
for(i=0;i<N;i++,printf("\n"))
for(j=0;j<N;j++)printf("%4d",a);
return 0;
}
void fun(int*i,int*j,int n)
{ if(*i==0 && *j<n-1)++(*j);
else if(*j==n-1 && *i<n-1)++(*i);
else if(*i==n-1 && *j > 0)--(*j);
else if(*j==0 && *i > 0)--(*i);
}
N的数字自己按自己的题目要求 更改能够得到这种效果吧
回复 #2 lin85210 的帖子
我试了一下你的程序,不行啊,然后我从网上又搜了下,搜到下面的程序,是可以运行的#include <iostream>
using namespace std;
int main()
{ cout << "请输入方阵的阶数:" << endl;
int n;
cin >> n;
int m;
if ( n%2==0 ) m=n/2;
else m=n/2+1;
int i,j,k=0,a;
for( i=0;i<m;i++ )
{ for( j=i;j<n-i;j++ )
{ k++;
a=k;
}
for( j=i+1;j<n-i;j++ )
{ k++;
a=k;
}
for( j=n-i-2;j>=i;j-- )
{ k++;
a=k;
}
for( j=n-i-2;j>=i+1;j-- )
{ k++;
a=k;
}
}
k=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{ cout << a << '\t';
k++;
if (k%n==0) cout << endl;
}
return 0;
} 3Qsdlkfj1
页:
[1]