- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
魔方阵与导师制问题
实验报告
实验课名称:数据结构实验 实验名称:魔方阵与本科生导师制问题 1.魔方阵问题
一、问题描述
魔方阵是一个古老的智力问题,它要求在一个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
2
25
18
11
图1 五阶魔方阵示例
二、数据结构设计
由魔方阵的性质,魔方阵其实是一个矩阵,因此考虑用二维数组存储魔方阵,其存储结构为:
int a[100][100];
二维数组a[100][100]来静态存储不超过100行100列的数组方阵。
三、算法设计
建立二维数组存储结构,输入一个数后,如果输入为奇数,则开始构造魔方阵,将1~m2的数字(m为奇数)填入矩阵,并使得每一行、每一列、每条对角线的累加和都相等,之后输出。设计流程图如图1.1所示。
图1.1 设计流程图
数据输入
输入魔方阵的行数m,,若m为奇数,则继续进行后面的操作,否则重新输入,可提供输入提示。
while(1)
{
printf(请输入一个奇数:);
scanf(%d,m);
if(m%2!=1)
printf(输入错误!请输入一个奇数!\n);
else break;
}
调用构造输出魔方阵的函数mofangzhen(m);
Step 1:定义一个二维数组。代码如下:
int a[100][100];
Step 2:构造魔方阵
int i,j,k;
for(j=0;jm;j++) //初始化矩阵
{
for(k=0;km;k++)
a[j][k]=0;
}
j=0;
k=(m-1)/2;
a[j][k]=1;
for(i=2;i=m*m;i++) //在矩阵中填入1~m2的数字,且使其满足要求
{
if(j-10)
j=(j-1+m)%m;
else j=j-1;
if(a[j][k]!=0)
{
j=(j+2)%m;
k=(k+1)%m;
}
a[j][k]=i;
}
(3)输出
输出魔方阵。代码如下:
printf(魔方阵为:\n);
for(j=0;jm;j++) //输出魔方阵
{
for(k=0;km;k++)
printf(%4d,a[j][k]);
printf(\n);
}
四、界面设计
程序包含输入提示功能和输出提示功能。
五、运行测试与分析
(1)运行程序,提示输入,如图1.2所示。
图1.1 启动界面
数据输入,如图1.2所示。
图1.2 数据输入界面
(3)数据结果输出。根据实验要求输出实验结果。如图1.3所示。
图1.3 数据结果输出界面
六、实验收获与思考
收获:
通过本次实验,熟练掌握了对二元数组的建立、赋值、输入、输出操作,深刻理解了二元数组的存储方式。
思考:
本实验还可考虑使用楼梯法,把1(或最小的数)放在第一行正中; 按以下规律排列剩下的n*n-1个数:
(1)、每一个数放在前一个数的右上一格;
(2)、如果这个数所要放的格已经超出了顶行那么就把它放在底行,仍然要放在右一列;
(3)、如果这个数所要放的格已经超出了最右列那么就把它放在最左列,仍然要放在上一行;
(4)、如果这个数所要放的格已经超出了顶行且超出了最右列,那么就把它放在前一个数的下一行同一列的格内;
(5)、如果这个数所要放的格已经有数填入,处理方法同(4)
2.本科生导师问题
一、问题描述
在高校的教学改革中,有很多学校实行了本科生导师制。一个班级的学生被分给几个老师,每个老师带n个学生,如果该老师还带研究生,那么研究生也可直接带本科生。本科生导师制问题中的数据元素具有如下形式:
导师带研究生(老师,((研究生1,(本科生1,…,本科生m1)),(研究生2,(本科生1,…,本科生m2))…))
导师不带研究生(老师,(本科生1,…,本科生m))
导师的自然情况只包括姓名、职称;研究生的自然情况只包括姓名、班级;本科生的自然情况只包括姓名、班级
二、数据结构设计
由问题描述可知,本实验的数据存储结构是一个广义表,每个表结点含姓名,职称,编号。在本实验中,广义表采用链式存储结构,代码如下:
struct Node//建立表结点
{
您可能关注的文档
最近下载
- 杨瑞龙-国有企业分类改革与公司治理结构创新研究报告.ppt VIP
- KernelMethod核回归核方法.ppt VIP
- (正式版)D-L∕T 607-2017 汽轮发电机漏水、漏氢的检验.docx VIP
- 2.5.2 解直角三角形的应用-方位角学历案.docx VIP
- JTGT3660—2020-公路隧道施工技术规范.docx VIP
- 教科EEC版小学英语五年级上册全册教案.pdf VIP
- 关于卫生院“十五五”发展规划方案(详细版).pdf VIP
- T∕CTES 1017-2019 纺织品 织物触感检测与评价方法 三点梁法.pdf VIP
- 健康生活方式指导员培训考核习题.docx VIP
- 施工现场临时用电的安全教育与培训.pptx VIP
原创力文档


文档评论(0)