设计一下程序,它自动生成一个N*N的陀螺方阵存入一个二维数组中,并把它显示输出.下图就是一个5*5的陀螺方阵.
1 16 15 14 13
2 17 24 23 12
3 18 25 22 11
4 19 20 21 10
5 6 7 8 9
[要求]
用#difine命令将方阵大小N定义为符号变量,并在多次运行程序的过程中把N分别定义为1,2,3,4,5,10.
(数字的排列不是按顺序的哦,被看错了.我不知该从何做起..唉.谁做出来我就从心里佩服和感谢他)
这样就可以吧
include<iostream>
#include<iomanip>
using namespace std;
#define N 5
int i=0,j=0,k=1;
void main()
{
int a,b;
int A[N][N];
a=N-1;b=N-1;
while(k<N*N)
{
for(;i<=a;i++)
A[i][j]=k++;
i--;
j++;
for(;j<=b;j++)
A[i][j]=k++;
j--;
i--;
for(;i>=N-a-1;i--)
A[i][j]=k++;
i++;j--;
for(;j>=N-a-1;j--)
A[i][j]=k++;
j++;
i++;
a--;
b--;
}
for(i=0;i<N;i++)
{cout<<endl<<endl;
for(j=0;j<N;j++)
cout<<setw(4)<<A[i][j];
}
cout <<endl;
}
[此贴子已经被作者于2005-11-12 21:58:24编辑过]
3楼的程序应该是没有调试过的吧!有两个小错误
#include<iostream>
#include<iomanip>
using namespace std;
#define N 5
int i=0,j=0,k=1;
void main()
{
int a,b;
int A[N][N];
a=N-1;b=N-1;
while(k<=N*N)//1
{
for(;i<=a;i++)
A[i][j]=k++;
i--;
j++;
for(;j<=b;j++)
A[i][j]=k++;
j--;
i--;
for(;i>=N-a-1;i--)
A[i][j]=k++;
i++;
j--;
for(;j>=N-a;j--)//2
A[i][j]=k++;
j++;
i++;
a--;
b--;
}
for(i=0;i<N;i++)
{
cout<<endl<<endl;
for(j=0;j<N;j++)
cout<<setw(4)<<A[i][j];
}
cout <<endl;
}