残冰 发表于 2013-12-17 17:43:42

编写奇数的幻方,我们老师总结的经验,为什么我这个不行,求大神指导

#include <stdio.h>
#define N 7
int main()
{
        int j,i;
        int a;
        a[(N-1)/2]=1;
        for(i=0;i<N;i=(i-1+N)%N)
        {
                for(j=(N-1)/2;j<N;j=(j+1+N)%N)
                {
                        a[(i-1+N)%N][(j+1+N)%N]=a+1;
                }
        }
        for(i=0;i<N;i++)
        {
               for(j=0;j<N;j++)
               {
                        printf("%d",a);
               }
        }
        return 0;
}

向往青莲 发表于 2013-12-17 19:54:39

幻方是啥? 能吃吗? 鸡肉味? 嘎嘣脆?

virusx1984 发表于 2013-12-17 22:54:00

向往青莲 发表于 2013-12-17 19:54 static/image/common/back.gif
幻方是啥? 能吃吗? 鸡肉味? 嘎嘣脆?

現已加入肯德基豪華午餐

maomingkun 发表于 2013-12-17 23:13:24

下边是我写的奇数的幻方的代码,我看不懂你的,所以自己就摸索着写了一个,仅供参考!

#include <stdio.h>


void main()
{
        int a;
        int z=0;
        int i,j,k=1;
        int x=0,y;
        printf("请输入一个大于0小于16的整数,求其幻方!\n");
        scanf("%d",&z);
        y=(z-1)/2;
       
        if (z%2!=0 && z>0 &&z<=100)//判断输入的是否是小于16的奇数
        {
                for (j=0;j<z*z;j++)
                {
                        if (x<0&&k%z!=1)
                        {
                                x=x+z;
                        }
                        if (y>z-1 && k%z!=1)
                        {
                                y=y-z;
                        }
                        if (k%z==1 && k!=1)
                        {
                                x=x+2;//x=0,y=4
                                y=y-1;
                                a=k;
                                x--;
                                y++;
                                k++;
                        }
                        else
                        {
                                a=k;
                                x--;
                                y++;
                                k++;
                        }
                }
                //打印出二维数组
                for (i=0;i<z;i++)
                {
                        for (j=0;j<z;j++)
                        {
                                printf("%d\t",a);
                        }
                        printf("\n");
                }               
        }
        else
        {
                printf("请输入一个大于0小于16的整数,求其幻方!\n");
               
        }
       
       
}

364063141 发表于 2013-12-23 10:09:00

支持鱼C,顶一下
页: [1]
查看完整版本: 编写奇数的幻方,我们老师总结的经验,为什么我这个不行,求大神指导