| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1086 人关注过本帖
标题:求魔方阵 运行不出结果
只看楼主 加入收藏
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
结帖率:87.5%
收藏
已结贴  问题点数:20 回复次数:7 
求魔方阵 运行不出结果
#include <stdio.h>
#include <math.h>
#include <string.h>
int main()
{int a[10][10];
int i,j,n,s1,s2,s3,s,t;
scanf("%d",&n);
    for(i=1;i<n;i++)
        for(j=1;j<=n;j++)
        {a[i][j]=0;}
   
    j=n/2-1;
    a[1][j]=1;
    for(t=2;t<=n*n;t++)
    {i=i-1;
    j=j+1;
    if((i<1)&&(j>n))
    {i=i+2;
    j=j-1;
    }
    else
    {if(i<1) i=n;
    if(j>n)j=1;
    }
    if (a[i][j]=0)
        a[i][j]=t;
    else
    {i=i+2;
    j=j-1;
    a[i][j]=t;}
    }
    for(i=0;i<n;i++)
    {for(j=0;j<=n;j++)
    {printf("%5d",a[i][j]);}
    printf("\n");}
return 0;}
搜索更多相关主题的帖子: int 魔方阵 include for 结果 
2023-10-12 21:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:10 
最起码应该把 题目要求 贴出来嘛
2023-10-13 08:36
yiyanxiyin
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:242
专家分:1856
注 册:2023-6-29
收藏
得分:10 
#include<stdio.h>
int main()
{
    int a[10][10];
    int i,j,ok,n,m;
 
    for(i = 0;i < 10;i++)                   /*给备用的数组做初始化*/
    {
        for(j = 0;j < 10;j++)
            a[i][j] = 0;
    }
 
    ok = 0;                                  /*限定输入的数必须满足要求*/
    while(ok == 0)
    {
        printf("Please input a number as the value of n:(必须是10以内的奇数)\n");
        scanf("%d",&n);
        if(n % 2 != 0 && n > 0 && n < 10 )
            ok = 1;
        else
            ok = 0;
    }
 
    i = 0;
    j = n/2;
    a[i][j] = 1;
    for(m = 2;m <= n*n;m++)                  /*因为1已经放好了,所以我们从2开始放*/
    {
 
        if((i == 0) && (j != n-1))            /*算法中的第3步*/
        {
            i = n-1;
            j = j+1;
            if(a[i][j] == 0)                  /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = 1;
                j = j - 1;
                a[i][j] = m;
            }
        }
 
        else if((i != 0) && (j == n-1))      /*算法中的第4步*/
        {
            i = i-1;
            j = 0;
            if(a[i][j] == 0)                /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = i + 1;
                j = n - 1;
                a[i][j] = m;
            }
        }
 
       else if((i == 0) && (j == n-1))       /*算法中的第5步*/
        {
            i = n-1;
            j = 0;
            if(a[i][j] == 0)                 /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = 1;
                j = n - 1;
                a[i][j] = m;
            }
        }
 
        else                                 /*算法中的第6步*/
        {
            i = i-1;
            j = j+1;
            if(a[i][j] == 0)                 /*算法中的第7步*/
                a[i][j] = m;
            else
            {
                i = i + 2;
                j = j - 1;
                a[i][j] = m;
            }
        }
    }
 
    printf("%d阶魔方阵:\n",n);
    for(i = 0;i < n;i++)                        /*输出数组*/
    {
        for(j = 0;j < n;j++)
        {
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}
2023-10-13 09:27
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
收藏
得分:0 
回复 2楼 rjsp
好滴 魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等
例如 三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求输出1~n方的自然数构成的魔方阵
2023-10-13 20:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用美美学c在2023-10-13 20:46:34的发言:

好滴 魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等
例如 三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求输出1~n方的自然数构成的魔方阵

那四阶魔方阵的对角线是什么?
2023-10-14 11:33
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
另外,作为题目而言,起码要交代 n 的取值范围,输出的格式要求
2023-10-14 11:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
不知道题目要求的话,没法写代码;
但根据3楼对题目要求的臆测,我写个demo

程序代码:
#include <stdio.h>

int main( void )
{
    unsigned a[100] = { 0 };

    unsigned n;
    if( scanf("%u",&n)!=1 || n%2==0 || n*n>sizeof(a)/sizeof(*a) )
    {
        puts( "输入格式错误,或输入了偶数,或输入数据过大,……。" );
        return 1;
    }

    size_t pos_r = (1)%n;
    size_t pos_c = (n+n/2-1)%n;
    for( unsigned i=0; i!=n*n; ++i )
    {
        pos_r = (pos_r+n-1)%n; // 行减一
        pos_c = (pos_c+1)%n; // 列加1

        if( a[pos_r*n+pos_c] != 0 ) // 已经填入了数字
        {
            pos_r = (pos_r+2)%n; // 行加2
            pos_c = (pos_c+n-1)%n; // 列减1
        }

        a[pos_r*n+pos_c] = i+1;
    }

    for( size_t i=0; i!=n*n; ++i )
        printf("%4u%c", a[i], " \n"[(i+1)%n==0] );
}

2023-10-14 12:49
美美学c
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2023-9-9
收藏
得分:0 
回复 5楼 rjsp
大佬 这个就是谭浩强上原本的题目 我也是题目都没看懂
2023-10-14 20:44
快速回复:求魔方阵 运行不出结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018550 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved