魔方阵问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
四、界面设计
程序包含输入提示功能和输出功能提示
五、运行测试与分析
(1)运行程序,显示提示
如果输入有错,程序会报错
(2)数据结果输出。根据实验要求输出实验结果。
六、实验收获与思考
通过本次实验,我对奇数魔方问题有了更加深刻的理解。魔方问题的实现,首先要了解奇数魔方的填充规律,让后把其规律用到程序当中就能实现魔方的填充。
3.如果上一个数的行数为1,则下一个数的行数为n,列数加1。如果上一个数的列数的n时,下一个数的列数为1,行数减1。
4.如果按上面的规则确定的位置上已有数,或上一个数是第一行第n列时,则把下一个数放在上一个数的下面。
三、算法设计
(1)数据输入
输入小于10的魔方阵的阶数
printf("输入小于10的奇数m:");
scanf("%d",&m);
(2)对输入的阶数进行魔方填充
int a[N][N]={0},i=0,j,k; /*先令所有元素都为0*/
j=(m-1)/2;
i=0;
for(k=1;k<=m*m;) /*开始处理*/
{
if((i<0)&&(j==m)) /*前一个数是第一行第m列时,把下一个数放在上一个数的下面*/
教师评分:
教师签字:
魔方源代码如下:
#define N 10
#include<stdio.h>
int main()
{int m;
printf("输入小于10的奇数m:");
scanf("%d",&m);
if(m%2==0||m>10)
printf("输入有误,请输入小于10的奇数!\n");
else
{
i=i+2;
j=j-1;
}
else if(i<0) /*当行数减到第一行,返回到最后一行*/
i=m-1;
else if(j>m-1) /*当列数加到最后一行,返回到第一列*/
j=0;
else if(!a[i][j])
{ /*如果该元素为0,继续执行程序*/
a[i][j]=k;
k++;
i=i-1;
j=j+1;
{
i=i+2;
j=j-1;
}
}
printf("魔方如下:\n");
for(i=0;i<m;i++) /*输出数组*/
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n\n");
}
}
}
实验报告
实验课名称:数据结构实验三
实验名称:魔方问题
班级:20130612
学号:13
姓名:李寅龙
时间:2014-5-25
一、问题描述
问题描述
魔方阵是一个古老的智力问题,它要求在一个m×m的矩阵中填入1~m2的数字(m为奇数),使得每一行、每一列、每条对角线的累加和都相等,如图1所示。
15
8
1
24
17
16
14
7
5
23
22
20
13
6
4
3
21
19
12
10
9
2Fra Baidu bibliotek
25
18
11
图1五阶魔方阵示例
基本要求
输入魔方阵的行数m,要求m为奇数,程序对所输入的m作简单的判断,如m有错,能给出适当的提示信息。
实现魔方阵。
输出魔方阵。
二、数据结构设计
1.将1放在第一行中间一列。
2.从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数加1。
{
int a[N][N]={0},i=0,j,k; /*先令所有元素都为0*/
j=(m-1)/2;
i=0;
for(k=1;k<=m*m;) /*开始处理*/
{
if((i<0)&&(j==m)) /*前一个数是第一行第m列时,把下一个数放在上一个数的下面*/
{
i=i+2;
j=j-1;
}
else if(i<0) /*当行数减到第一行,返回到最后一行*/
i=m-1;
else if(j>m-1) /*当列数加到最后一行,返回到第一列*/
j=0;
else if(!a[i][j])
{ /*如果该元素为0,继续执行程序*/
a[i][j]=k;
k++;
i=i-1;
j=j+1;
}
else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/
}
else /*如果该元素不为0,就说明要填的数的位置已经被占,则该数放在上一个数的下面*/
{
i=i+2;
j=j-1;
}
(3)输出
printf("魔方如下:\n");
for(i=0;i<m;i++) /*输出数组*/
{
for(j=0;j<m;j++)
printf("%5d",a[i][j]);
printf("\n\n");
相关文档
最新文档