c语言 九宫格

2024-11-22 23:17:08
推荐回答(3个)
回答(1):

#include
#include
int N=15;
int main()
{
int i,j,k,m,n;
int G[N][N];
printf("Input the odd number(number<=15) you want !\n");
scanf("%d",&m);
if((m>0)&&(m%2))
{
printf("Your intput number is %d\n",m);
n=m*m;
j=0;
k=m/2;
for(i=1;i<=n;i++)
{
G[j][k]=i;
if(i%m==0)
if(j==m-1)
j=0;
else
j++;
else
{
if(j==0)
j=m-1;
else
j--;
if(k==m-1)
k=0;
else
k++;
}
}
for(i=0;i {
for(j=0;j printf("%6d",G[i][j]);
printf("\n");
}
}
else
printf("The number you inputed is ERROR!!!");
system("pause");
}
可以接受15以内的任意魔方 你的九宫格按照这个程序输出是这样的:

回答(2):

如下图:#include
void main()
{
 int a[3][3];
 int n=0;
 int i=0,j=0;
 for(i=0;i<=2;i++)
 {
  for(j=0;j<=2;j++)
  {
   scanf("%d",&n);
   a[i][j]=n;
  }
 }
 for(i=0;i<=2;i++)
 {
  for(j=0;j<=2;j++)
  {
   printf("%3d",a[i][j]);
  }
  printf("\n");
 }
}

回答(3):

奇数幻方:
#include "stdio.h"
int main()
{
int n;
int d[10][10];
int i,j,k,stx,sty,x,y;
printf("输入n:");//n*n阶幻方
scanf("%d",&n);
stx=0;
sty=(n+1)/2;
for(i=stx,j=sty,k=1;k<=n*n;k++,j++,i++)
{
if(i<1)
x=n+i;
else if(i>n)
x=i-n;
else
x=i;
if(j<1)
y=n+j;
else if(j>n)
y=j-n;
else
y=j;
//printf("%d,%d\t",x,y);
d[x][y]=k;
if(k%n==0)
{
stx=stx+1;
sty=sty-1;
i=stx-1;
j=sty-1;
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
printf("%d\t",d[i][j]);
}
printf("\n\n");
}
}