纤纤o 2021-07-23 16:10 采纳率: 100%
浏览 100
已结题

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,则输出上图。
/
#include<stdio.h>
void main()
{
int a[50][50],x,y,m,p;
printf("请输入奇数\n");
do{
scanf("%d",&m);
} while(m<=0||m>=50);
for(x=0;x<m;x++)
for(y=0;y<m;y++)
a[x][y]=0;
x=0;
y=m/2;
a[x][y]=1;
for(p=2;p<=m*m;p++)
{
if(x-1<0)
x=x-1+m;
else x--;
if(y+1>=m)
y=y+1-m;
else y++;
if(a[x][y]!=0)
{
x=(x+2)%m;
y=(y-1)%m;
} a[x][y]=p;
}
for(x=0;x<m;x++)
{
for(y=0;y<m;y++)
printf("%4d",a[x][y]);
printf("\n");
}
}
这个程序我哪里有错误

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2021-07-23 17:16
    关注
    #include<stdio.h>
    #include<stdlib.h>
    void main()
    {
        int a[50][50],x,y,m,p;
        printf("请输入奇数\n");
        do{
            scanf("%d",&m);
        } while(m<=0||m>=50);
        for(x=0;x<m;x++)
            for(y=0;y<m;y++)
                a[x][y]=0;
        x=0;
        y=m/2;
        a[x][y]=1;
        for(p=2;p<=m*m;p++)
        {
            if(x-1<0 && y+1>=m)  //当两者同时满足时,要特殊处理,即左上角的下一个值是放在左上角的下方,这是特例
            {
                x=1;
            }
            else
            {
                if(x-1<0)
                    x=x-1+m;
                else 
                    x--;
                if(y+1>=m)
                    y=y+1-m;
                else y++;
            }
            if(a[x][y]!=0)
            {
                x=(x+2)%m;
                y=(y-1)%m;
            } a[x][y]=p;
        }
        for(x=0;x<m;x++)
        {
            for(y=0;y<m;y++)
                printf("%4d",a[x][y]);
            printf("\n");
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 快乐鹦鹉 2021-07-23 16:19
    关注

    你是编译有错,还是结果不对啊

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月2日
  • 已采纳回答 7月25日
  • 创建了问题 7月23日

悬赏问题

  • ¥15 arm虚拟机无法和物理机互通
  • ¥15 如何在此代码上增加一个统计学生生源的功能?(语言-c语言)
  • ¥15 Android导航条遮盖异常
  • ¥15 计算机网络技术基础问题
  • ¥15 设置mac系统只能访问指定网站
  • ¥15 西门子博途 s7 1200控制三台步进电机
  • ¥15 基于非参数的方向距离函数求污染物影子价格(有偿)
  • ¥15 vue+element 生成table
  • ¥15 实验 4 FIFO 算法和 LRU 算法-C 程序实现
  • ¥15 有偿拼接大疆精灵4RGB影像