矩阵文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成都信息工程学院
课程设计
题目:魔方矩阵
作者姓名:
班级:
学号:
指导教师:
日期:年月日
作者签名
摘要
我的实践题目是对C语言程序设计——魔方矩阵,主要的要求:采用菜单形式,至少包含输入矩阵、保存矩阵、载入矩阵、退出;输入整数N,输出N*N 的二阶矩阵;每一行,每一列以及两条对角线之和相等;程序中应能判断N的合法性及合理性;
N最大值不得小于20;并指定行的排序,排序方法不限,排序后且能按排序后的结果保存到文件中,并且能够下一次载入;每次输出一个矩阵,同时在下面输出素数、水仙花数。此次的系统我还添加了一个注册模块。
本实践能够充分的考核我们对C语言的熟悉度以及实践能力,对我们更多学习与了解C语言有极大的帮助,因此这次实践是十分有必要的。
我的设计内容就是利用if条件语句、for循环语句以及条件判断语句等函数及指针的合理使用,通过不断的运行,调试,输出,对本程序进行合理的解决,对魔方矩阵,文件,素数,水仙花数的算法进一步的了解掌握。
关键字:C语言for循环if条件魔方矩阵素数水仙花数
目录
1引言 (3)
1.1课题背景 (3)
1.2本课题的主要工作 (4)
2魔方矩阵系统需求分析及开发工具 (4)
2.1系统应具备的基本功能 (4)
2.2开发环境及工具 (5)
2.2.1 运行环境 (5)
2.2.2 c语言简介 (5)
2.2.3 for循环语句介绍 (5)
2.2.4 if条件语句介绍 (6)
3系统总体结构设计 (6)
3.1 基本简介 (6)
3.2 算法设计 (6)
3.3 系统功能模块设计简介 (9)
3.3.1 魔方矩阵模块 (9)
3.3.2文件的读与写 (15)
4系统测试与分析 (17)
4.1 测试 (17)
4.2 测试过程中遇到的问题 (17)
5 结论 (18)
6参考文献 (18)
1引言
1.1课题背景
魔方又称幻方、纵横图、九宫图,最早记录于我国古代的洛书。据说夏禹治水时,河南洛阳附近的大河里浮出了一只乌龟,背上有一个很奇怪的图形,古人认为是一种祥瑞,预示着洪水将被夏禹王彻底制服。后人称之为"洛书"或"河图",又叫河洛图。
N 为奇数时
(1) 将1放在第一行中间一列;
(2) 从2开始直到n×n止各数依次按下列规则存放:
按45°方向行走,如向右上
每一个数存放的行比前一个数的行数减1,列数加1
(3) 如果行列范围超出矩阵范围,则回绕。
例如1在第1行,则2应放在最下一行,列数同样减1;
(4) 如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,
则把下一个数放在上一个数的下面。
N为4的倍数时
采用对称元素交换法。
首先把数1到n×n按从上至下,从左到右顺序填入矩阵
然后将方阵的所有4×4子方阵中的两对角线上的数关于大方阵中心作中心对称交换(注意是各各子矩阵对角线上面的数),即a(i,j)与a(n+1-i,n+1-j)交换,所有其它位置上的数不变。(或者将对角线不变,其它位置对称交换也可)
N 为其它偶数时
当n为非4倍数的偶数(即4n+2形)时:首先把大方阵分解为4个奇数(2m+1阶)子方阵。
按上述奇数阶魔方给分解的4个子方阵对应赋值
上左子阵最小(i),下右子阵次小(i+v),下左子阵最大(i+3v),上右子阵次大(i+2v)
即4个子方阵对应元素相差v,其中v=n*n/4
1.2本课题的主要工作
采用菜单形式,至少包含输入矩阵、保存矩阵、载入矩阵、退出;输入整数N,输出N*N的二阶矩阵;每一行,每一列以及两条对角线之和相等;程序中应能判断N的合法性及合理性;N最大值不得小于20;并指定行的排序,排序方法不限,排序后且能按排序后的结果保存到文件中,并且能够下一次载入;每次输出一个矩阵,同时在下面输出素数、水仙花数。
2魔方矩阵系统需求分析及开发工具
2.1系统应具备的基本功能
实现每一行,每一列以及对角线的相加结果相同,并指定行的排序,排序方法不限,排序后且能按排序后的结果保存到文件中,并且能够下一次载入,每次
输出一个矩阵,同时在下面输出素数、水仙花数。
2.2开发环境及工具
2.2.1 运行环境
本课题在VC6.0下运行,在这个平台上进行程序的调试。
2.2.2 c语言简介
C语言,是一种通用的、过程式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序员中备受青睐。最近25年是使用最为广泛的编程语言。
2.2.3 for循环语句介绍
C语言中的For语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束的条件的情况下,它可以完全替代while语句。
for语句的一般表达式
for(<初始化>; <条件表达式>; <增量>)语句
For语句的执行过程如下:
(1)最先求解初始化.
(2)求解条件表达式,若其值为真,则执行for语句中指定的内嵌语句,然后执行下面第(3)步。若为假,则结束循环。
(3)求解增量。
(4)转回上面第(2)步骤继续执行。
(5)循环结束,执行for语句下面的一个语句。
2.2.4 if条件语句介绍
if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。
C语言提供了3种形式的if语句。
if(表达式)语句
if(表达式)语句1 else语句2
if(表达式1)语句1
else if(表达式2)语句2
…
else 语句n
3系统总体结构设计
3.1 基本简介
就是使用模块化思维方法分析课题,画出模块结构图。可采取自顶向下、逐层分析的方法,将课题分成若干的模块,然后对个模块重点和难点内容进行分析,最终各个击破。
3.2 算法设计
在设计算法时采用了下面一些方法: