51Testing软件测试论坛

标题: 不知道C语言的问题可不可以提问啊??? [打印本页]

作者: lhjtc8257    时间: 2007-5-19 18:03
标题: 不知道C语言的问题可不可以提问啊???
如果可以的话,请帮我解答下这个题目?

要实现这个效果如何?
16 15 14 13
  5   4   3  12
  6   1   2  11
  7   8   9  10

N*N的螺旋矩阵sdlkfj8
作者: lin85210    时间: 2007-5-20 09:24
/*
  N×N螺旋方阵
*/
#include<stdio.h>

#define  N  9
static a[N][N];

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[n+i][n+j]=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[j]);
    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
标题: 回复 #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[20][20];
for( i=0;i<m;i++ )
{ for( j=i;j<n-i;j++ )
{ k++;
a[j]=k;
}
for( j=i+1;j<n-i;j++ )
{ k++;
a[j][n-i-1]=k;
}
for( j=n-i-2;j>=i;j-- )
{ k++;
a[n-i-1][j]=k;
}
for( j=n-i-2;j>=i+1;j-- )
{ k++;
a[j]=k;
}
}

k=0;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{ cout << a[j] << '\t';
k++;
if (k%n==0) cout << endl;
}

return 0;
}
作者: lhjtc8257    时间: 2007-5-25 20:00
3Qsdlkfj1




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2