魔方阵 实验报告

魔方阵 实验报告

ID:46902643

大小:43.50 KB

页数:3页

时间:2019-11-29

魔方阵 实验报告_第1页
魔方阵 实验报告_第2页
魔方阵 实验报告_第3页
资源描述:

《魔方阵 实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、<<魔方阵>>实验报告一.实验目的1.设计数据结构;2.设计算法完成任意n阶魔方阵的填数;3.分析算法的时间复杂度。二.实验内容魔方阵,又叫幻方阵,在我国古代称为“纵横图”。它是在一个n*n的矩阵中填入1到n*n的数字(n为奇数),使得每一行,每一列,每条对角线的累加和都相等。三.程序代码源程序:#includevoidSquare(intn){inta[9][9];intp=0,q=(n-1)/2;a[0][q]=1;//在第0行的中间位置填1for(inti=2;i<=n*n;i++){p

2、=(p-1+n)%n;//求i所在行号q=(q-1+n)%n;//求i所在列号if(a[p][q]>0){p=(p+2)%n;q=(q+1)%n;//这两句进行了修改,否者得不到正确的答案,切记切记!!!!}//如果位置(p,q)已经有数,填入同一列下一行a[p][q]=i;}for(p=0;p>n;cou

3、t<<"魔方阵的排列结果为:";Square(n);}四.结果与心得体会1.程序的测试结果是什么?答:n=3时n=5时2.在调试的过程中遇到了什么问题,是如何解决的?答:在调试的过程中遇到了以下几个问题:1.Square函数的形式参数不可以是(inta[][],intn),因为程序是在编译时就会为数组分配内存,而那样的形式参数是不合理的。在调试程序的过程中,我反复试了好多次,也证明了那是错的。解决方法:直接将Square函数的形参设为(intn),改在在其函数内定义数组a[9][9],这样就能将问题很好的解决。2

4、.在书中提供的Square函数里面,有一个语句是这样的if(a[p][q]>0)p=(p+1)%n;,这个语句是错的。之所以会有这样的错误,是由于错误的理解了“如果位置(p,q)已经有数,填入同一列下一行”这一句的意思,这句的意思是填入原数的下面,而不是即将填入的那个数但又已填入数的那个数的下面。解决方法:将该语句改成:if(a[p][q]>0){p=(p+2)%n;q=(q+1)%n;},这样就可以了。3.由于数组a[][]是在Square函数中定义的,因此将数组数据输出的语句就只能放在Square函数中实现。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。