lhjtc8257 发表于 2007-5-19 18:03:10

不知道C语言的问题可不可以提问啊???

如果可以的话,请帮我解答下这个题目?

要实现这个效果如何?
16 15 14 13
5   4   312
6   1   211
7   8   910

N*N的螺旋矩阵sdlkfj8

lin85210 发表于 2007-5-20 09:24:16

/*
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的数字自己按自己的题目要求 更改能够得到这种效果吧

gzj_06 发表于 2007-5-20 12:56:54

回复 #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;
}

lhjtc8257 发表于 2007-5-25 20:00:18

3Qsdlkfj1
页: [1]
查看完整版本: 不知道C语言的问题可不可以提问啊???