#include<stdio.h>
#define n 3
#define N n+1
void main()
{
void copy(int a[][N],int );
void tourna(int a[][N],int );
int a[N][N]={0};
tourna(a,N);
for(int i=1;i<N;i++)
for(int j=1;j<N;j++)
{
printf("%d ",a[i][j]);
if(j==N-1)
printf("\n");
}
}
void copy(int a[][N],int n)
{
int m=n/2;
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
a[i][j+m]=a[i][j]+m;
a[i+m][j]=a[i][j+m];
a[i+m][j+m]=a[i][j];
}
}
void tourna(int a[][N],int n)
{
if(n==1)
{
a[1][1]=1;return;
}
tourna(a,n/2);
copy(a,n);
}
#include<stdio.h>
#define n 3
#define N n+1
void main()
{
int i,j;
void copy(int a[][N],int );
void tourna(int a[][N],int );
int a[N][N]={0};
tourna(a,N);
for( i=1;i<N;i++)
for( j=1;j<N;j++)
{
printf("%d ",a[i][j]);
if(j==N-1)
printf("\n");
}
}
void copy(int a[][N],int b)
{
int m=b/2,i,j;
for( i=1;i<=m;i++)
for( j=1;j<=m;j++)
{
a[i][j+m]=a[i][j]+m;
a[i+m][j]=a[i][j+m];
a[i+m][j+m]=a[i][j];
}
}
void tourna(int a[][N],int b)
{
if(b==1)
{
a[1][1]=1;return;
}
tourna(a,b/2);
copy(a,b);
}
//能运行
//不过还有一个,错误,是数组越界了,你自己找下吧
//错误原因,是常量,不能当做变量使用,一用就报错
如:void tourna(int a[][N],int n)
的n
你可以改下: void tourna(int a[][N],int b)
{b=n;//就可以了
}
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息