鱼C论坛

 找回密码
 立即注册
查看: 2277|回复: 4

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

[复制链接]
发表于 2013-12-17 17:43:42 | 显示全部楼层 |阅读模式
1鱼币
#include <stdio.h>
#define N 7
int main()
{  
        int j,i;
        int a[N][N];
        a[0][(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[i][j]+1;
                }
        }
        for(i=0;i<N;i++)
        {
                 for(j=0;j<N;j++)
                 {
                        printf("%d",a[i][j]);
                 }
        }
        return 0;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 19:54:39 | 显示全部楼层
幻方是啥? 能吃吗? 鸡肉味? 嘎嘣脆?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 22:54:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-17 23:13:24 | 显示全部楼层
下边是我写的奇数的幻方的代码,我看不懂你的,所以自己就摸索着写了一个,仅供参考!

#include <stdio.h>


void main()
{
        int a[100][100];
        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[x][y]=k;
                                x--;
                                y++;
                                k++;
                        }
                        else
                        {
                                a[x][y]=k;
                                x--;
                                y++;
                                k++;
                        }
                }
                //打印出二维数组
                for (i=0;i<z;i++)
                {
                        for (j=0;j<z;j++)
                        {
                                printf("%d\t",a[i][j]);
                        }
                        printf("\n");
                }               
        }
        else
        {
                printf("请输入一个大于0小于16的整数,求其幻方!\n");
               
        }
       
       
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-23 10:09:00 | 显示全部楼层
支持鱼C,顶一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 20:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表