作业帮 > 综合 > 作业

求大神帮我设计一个5阶魔方方阵.用C语言 不要C++

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/05/21 18:03:07
求大神帮我设计一个5阶魔方方阵.用C语言 不要C++
输出如下 17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9 运行出来就是这个
求大神帮我设计一个5阶魔方方阵.用C语言 不要C++
你想求5的话 输入5就行了  会显示输出5阶以下的魔方阵 #include<stdio.h>
void main()
{
 int i,j,k,m,n;
 int a[20][20];
 printf("please input the m:");
 scanf("%d",&m);
 for(n=3;n<=m;n++)
 {
  if(n%2!=0)
  {
   printf("%4d阶魔方阵如下:\n",n);
   for(i=0;i<n;i++)
    for(j=0;j<n;j++)
     a[i][j]=0;
     j=n/2;
     a[0][j]=1;
   for(k=2;k<=n*n;k++)
   {
    i--;
    j++;
    if(i<0)
     i=n-1;
    else if(j>n-1)
     j=0;
    if(a[i][j]==0)
     a[i][j]=k;
    else
    {
     i=(i+2)%n;
     j=(j-1+n)%n;
     a[i][j]=k;
    }
   }
   printf("\n");
   for(i=0;i<n;i++)  
   {
    for(j=0;j<n;j++)
    printf("%4d",a[i][j]); 
    printf("\n\n");
   }
  }
 }
}
调试运行吧!
再问: 可以运行的时候不用输入直接显示5的吗??
再答: 这个是我以前设计的代码 是输入17就是显示17阶以下的奇数魔方阵,如果你要改成直接显示5阶的话 吧循环去掉就行了
再问: = = 循环代码在哪里
再答: #include<stdio.h>void main(){ int i,j,k,m,n; int a[20][20]; printf("please input the n:"); scanf("%d",&n);&#47;&#47;这里改成你想要输出的阶数,输入5就行了 &#47;&#47;for(n=3;n<=m;n++) 去掉这里的循环  printf("%4d阶魔方阵如下:&#92;n",n);   for(i=0;i<n;i++)    for(j=0;j<n;j++)     a[i][j]=0;     j=n&#47;2;     a[0][j]=1;   for(k=2;k<=n*n;k++)   {    i--;    j++;    if(i<0)     i=n-1;    else if(j>n-1)     j=0;    if(a[i][j]==0)     a[i][j]=k;    else    {     i=(i+2)%n;     j=(j-1+n)%n;     a[i][j]=k;    }   }   printf("&#92;n");    for(i=0;i<n;i++)     {    for(j=0;j<n;j++)     printf("%4d",a[i][j]);      printf("\n\n");   }   }