64,637
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <malloc.h>
int deal(int n);
void main()
{
int n/* = 7*/,r;
int i,j;
printf("请输入数组的维数(维数应大于3且应为奇数):");
scanf("%d",&n);
fflush(stdin);
while(n<3||n%2==0)
{
printf("输入错误,请重新输入(维数应大于3且应为奇数):");
scanf("%d",&n);
fflush(stdin);
}
deal(n);
getch();
}
int deal(int n)
{
int i,j,no,num,max;
int *mtrx;
max=n*n;
mtrx = malloc((max+max) * sizeof(int));
mtrx[n/2]=1;
i=0;
j=n/2;
for(num=2;num<=max;num++)
{
i=i-1;
j=j+1;
if((num-1)%n==0)
{
i=i+2;
j=j-1;
}
if(i<0)
{
i=n-1;
}
if(j>n-1)
{
j=0;
}
no =i*n+j;
mtrx[no]=num;
}
printf("The charming matrix is:");
no=0;
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
{
printf("%3d",mtrx[no]);
no++;
}
}
free(mtrx);
}
#include<stdio.h>
# include<malloc.h>
int deal(int n);
void main()
{
int n,r;
int i,j;
printf("请输入数组的维数(维数应大于3且应为奇数):");
scanf("%d",&n);
fflush(stdin);
while(n<3||n%2==0)
{
printf("输入错误,请重新输入(维数应大于3且应为奇数):");
scanf("%d",&n);
fflush(stdin);
}
deal(n);
getch();
}
int deal(int n)
{
int i,j,no,num,max;
int *mtrx;
max=n*n;
mtrx = malloc(max+max);
mtrx[n/2]=1;
i=0;
j=n/2;
for(num=2;num<=max;num++)
{
i=i-1;
j=j+1;
if((num-1)%n==0)
{
i=i+2;
j=j-1;
}
if(i<0)
{
i=n-1;
}
if(j>n-1)
{
j=0;
}
no =i*n+j;
mtrx[no]=num;
}
printf("The charming matrix is:");
no=0;
for(i=0;i<n;i++)
{
printf("\n");
for(j=0;j<n;j++)
{
printf("%3d",mtrx[no]);
no++;
}
}
free(mtrx);
}