对于数字旋转方阵可以进行一圈输入为数字一圈输入为0交叉互换输入。以此为基础进行c++代码编写但是运行结果要么为纯数字要么全为0??这是为什么呢??
#include<stdio.h>
#define N 10
int data[N][N]={0};
void Full(int number,int begin,int size)
{
int i,j,k;
if(size==0) return;
if(size==1){
data[begin][begin]=number;
return;
}
i=begin;j=begin;
if((size%2)==1){
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
i++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
j++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
i--;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
number++;
j--;
}
}
else{
number=0;
for(k=0;k<size-1;k++)
{
data[i][j]=number;
i++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
j++;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
i--;
}
for(k=0;k<size-1;k++)
{
data[i][j]=number;
j--;
}
}
Full(number,begin+1,size-2);
return;
}
void OutPrint(int size)
{
int i,j;
for(i=0;i<size;i++){
for(j=0;j<size;j++)
{
printf("%4d",data[i][j]);
}
printf("\n");
}
}
int main()
{
int n;
printf("输入方阵阶数(小于10):\n");
scanf("%d",&n);
Full(1,0,n);
OutPrint(n);
return 0;
}