数据结构课程设计之奇数魔方阵

上传人:M****1 文档编号:561549791 上传时间:2023-01-22 格式:DOC 页数:20 大小:516.38KB
返回 下载 相关 举报
数据结构课程设计之奇数魔方阵_第1页
第1页 / 共20页
数据结构课程设计之奇数魔方阵_第2页
第2页 / 共20页
数据结构课程设计之奇数魔方阵_第3页
第3页 / 共20页
数据结构课程设计之奇数魔方阵_第4页
第4页 / 共20页
数据结构课程设计之奇数魔方阵_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《数据结构课程设计之奇数魔方阵》由会员分享,可在线阅读,更多相关《数据结构课程设计之奇数魔方阵(20页珍藏版)》请在金锄头文库上搜索。

1、长沙理工大学数据结构课程设计报告田晓辉学 院 计算机与通信工程 专 业 计算机科学与技术班 级 计08-01 学 号 200850080110 学生姓名 田晓辉 指导教师 陈倩诒 课程成绩 完成日期 2010年7月10日课程设计成绩评定学 院 计算机与通信工程 专 业 计算机科学与技术班 级 计08-01 学 号 200850080110 学生姓名 田晓辉 指导教师 陈倩诒 完成日期 2010年7月10日指导教师对学生在课程设计中的评价评分项目优良中及格不及格课程设计中的创造性成果学生掌握课程内容的程度课程设计完成情况课程设计动手能力文字表达学习态度规范要求课程设计论文的质量指导教师对课程设计

2、的评定意见综合成绩 指导教师签字 2010年7月10日课程设计任务书计算机与通信工程学院 计算机科学技术专业 课程名称数据结构课程设计时间2010学年第2学期1819周学生姓名田晓辉指导老师陈倩诒题 目用C语言解决魔方阵问题主要内容:建立一个n*n阶的矩阵,在这个矩阵中填入1到n2(n为奇数)个数,使得每行、每列以及每条对角线的和相等。要求:(1)通过实际项目的分析、设计、编码、测试等工作,掌握用C语言来开发和维护软件。(2)按要求编写课程设计报告书,能正确编写分析、设计、编码、测试等技术文档和用户使用手册。应当提交的文件:(1)课程设计学年论文。(2)课程设计附件(主要是源程序)。用C语言解

3、决魔方阵的问题 学生姓名:田晓辉 指导老师:陈倩诒 摘 要 本课程设计主要解决设计一个nn的矩阵中填入1到n2的数字(n为奇数),使得每一行、每一列、每条对角线的累加和都相等的问题。在课程设计中,系统开发平台为Windows 7,程序设计语言采用Visual C+6.0,程序运行平台为Windows 98/2000/XP/7。在程序设计中,采用了C语言结构化程序设计思想和过程设计方法,以功能函数为基本结构,对问题中的要求做出了准确的实现。程序通过调试运行,初步实现了设计目标。 关键词 程序设计;C+6.0;结构化;过程设计;功能函数 田晓辉 用C语言解决魔方阵问题 第1页 共14页目录1.引言

4、.11.1课程设计目的.11.2课程设计内容.12.设计思路与方案.23.详细实现.33.1数据结构与数据存储表示.33.2功能函数.33.3函数逻辑功能调用图.53.4本程序执行流程图.64.运行环境与结果.74.1程序运行环境.74.2程序运行结果.75.结束语.9参考文献.10附录 源程序代码.111 引 言本课程设计主要解决设计一个nn的方阵中填入1到n2(n为奇数)的数字,使得每一行、每一列、每条对角线上各个数字累加的和都相等的问题。1.1 课程设计目的通过这次课程设计进一步了解了二维数组的使用方法和一些基本的设计思路。对于一个nn的方阵,其中n为奇数,在nn的魔方阵中,填入1到n2

5、的整数,使得其各每一行、每一列、每条对角线上各个数字累加和皆相等1。1.2 课程设计内容本次课程设计内容主要是利用二维数组输出正确的n阶魔方矩阵。n阶魔方,又叫幻方阵,在我国古代称为“纵横图”,是一个比较有趣的游戏。2n阶魔方就是用1到n2的数字不重复的填入方阵中。每一行中n个数之和,共得n个和;每一列中n个数之和,共得n个和;每一条对角线n个数之和,共得两个和,每一个和称为魔数。魔方阵中的每个魔数都相等。如图1.2就是一个3阶魔方阵,它是用数字1到9不重复的填入3*3的方阵中,使得各行、各列及对角线的魔数都等于15。3618753294 图1.1 3阶魔方阵2 设计思路与方案 首先,输入一个

6、数字n(1n99),则输出对应的n阶魔方阵,并输出每一行、每一列、每条对角线上各个数字累加和。 若输入数字n超出要求范围,则提醒用户重新输入n。 但若输入数字0时,操作结束,退出程序。 使用多维数组输出魔方阵,分别用3个子函数实现相应的功能。 输入形式:数字n(1n99)。 输出形式:(1)以矩阵形式输出n(1n99)阶魔方阵; (2)输出每一行、每一列、每条对角线上各个数字累加和; (3)输出程序运行时间。3 详细实现3.1 数据结构与数据存储表示这方面使用二维数组nMAXMAX来静态存储不超过MAX行MAX列的数组方阵,其中n(1=n=99)为满足条件的数。3.2 功能函数 主要使用与实现

7、如下函数: (1)void main()函数,主函数,调用以下子函数,实现魔方阵填充与输出,实现问题要求功能; (2)#include函数,用以计算程序运行时间函数;(3)void jishu(int n)函数,n为奇数实现n阶魔方阵,实现思想如下;a.在1到n2的数字中,选择1开始填充魔方,将数字1填入第一行的中间方格中,即(0,n/2)的位置。b.向已填充的前一个数字位置(p,q)的左上角(p-1,q-1)填入下一个数字,如果出现以下情况,则修改填充位置:i)若填充位置超出上边界,则修改为下边界的相应位置,即把p-1修改为n-1;ii)若填充位置超出左边界,则修改为最右边的相应位置,即把q

8、-1改为n-1;iii)若填充位置已有数字,则填充位置修改为下一行的同一位置。c.重复以上步骤,直至将n2个数字全部填入魔方中。最后调用函数函数out(n,a)和check(n,a),实现魔方阵的输出,检验魔方阵的准确性。具体实现代码如下:void jishu(int n)/*奇数*/ int p,q,i,aMAXMAX; p=0; q=(n-1)/2; a0q=1;/*第一个数字的填入位置*/ for(i=2;i0)/*如果填入位置已有数字,则重新计算填入位置*/ p=(p+2)%n;/*由于前面p减了1,因此p应该加1,才能表示下一行*/ q=(q+1)%n;/*由于前面q减了1,因此q应

9、该加1,才能表示同一列*/ apq=i;/*填入数字*/ out(n,a);/*调用输出函数*/ check(n,a);/*调用验证函数*/(4)void out(int n,int aMAXMAX)函数,此函数用以调整方阵元素位置,实现魔方阵n*n形式输出。具体实现代码如下:void out(int n,int aMAXMAX)/*魔方矩阵输出函数*/ int p,q; for(p=0;p=n-1;p+) for(q=0;q=n-1;q+) coutsetw(4)apq;/*输出魔方矩阵的结果*/ coutendlendl; (5)void check(int n,int aMAXMAX)函

10、数,计算并输出n阶魔方阵每行、每列以及每条对角线上各个数字的累加和,同时验证魔方阵的准确性。具体实现代码如下:void check(int n,int aMAXMAX)/*魔方矩阵验证函数*/ int p,q,sum1=0,sum2=(n*n+1)*n/2,k; cout此魔方阵的每行、每列、两条对角线的和为:sum2endl;/*输出标准魔方阵的每行、每列、两条对角线的和*/ for(p=0;pn;p+) for(q=0;qn;q+) sum1=apq+sum1;/*计算矩阵横行纵行的和*/ if(sum1!=sum2)/*判断矩阵横行纵行的和是否与标准相同*/ cout横行纵行计算结果与标准不符,请修改程序错误endl; break;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号