-
《数据结构》课程设计
题目<
/p>
____n
维矩阵的乘法
AB
-1
______
学号
_________________
姓名
______________________
专业
_____________________
指导老师
___________________
数据结构课程设计
第一章:课程设计的目的
................
.........................................
3
第二章:课程设计的内容和要求
.......................................
......
3
课程设计的内容
..................................................
..................
3
运行环境
.......................
..................................................
.......
3
第三章
:
课程设计分析
.
.
..................................................
............
4
矩阵的存储
......................
..................................................
....
4
矩阵的输入与输出
<
/p>
........................................
........................
4
矩阵的乘法运算
....................
................................................
4
矩阵的求逆运算
.......
..................................................
...........
4
第四章:课程设计的算法描述
...
..............................................
4
矩阵的存储
.........
..................................................
.................
4
矩阵的输出
......................
..................................................
....
5
矩阵的乘法
....
..................................................
......................
5
矩阵的求逆运算
....................
................................................
5
第五章:源代码
.......
..................................................
................
7
第六章:结束语
....................
..................................................
. 11
第
1
页
共
11
页
数据结构课程设计
第一章:课程设计的目的
本学期我们
对
《数据结构》
这门课程进行了学习。
这门课程是一门实践性非
常强的课程,
为了让大家更好地理解与
运用所学知识,
提高动手能力,
我们进行
了此次课程设计实习。
这次课程设计不但要求实习者掌握
《数
据结构》
中的各方
面知识,还要求实习者具备一定的
C
语言基础和编程能力。
具体说来,这次课程设计主要有两大方面目的。
一是让实习者通过实习掌握
《数据结构》
中的知识。
对于矩阵乘法这一课题
来说,
所要求掌
握的数据结构知识主要是数组的相关概念和数组用来存储矩阵的
相关便利性。
二是通过实习巩固并提高实习者的
C
语言知识,
并初步了解
Visual C++
p>
的知
识,提高其编程能力与专业水平。
第二章:课程设计的内容和要求
课程设计的内容
设计一个矩阵相乘的
程序,首先从键盘输入两个矩阵
a
,
b
的内容,并输出
两个矩阵,输出
ab<
/p>
-
1
结果。
要求
要求
1
)界面友好,函数功能要划分好
2
)总体设计应画一流程图
3
)程序要加必要的注释
4
)要提供程序测试方案
5
)程序一定要经得起测试,宁可功能少一些,也要能运行起来,不能运行
的程序是
没有价值的。
运行环境
该程序的运行环境为
Windows
xp
系统,
Microsoft Visual
C++6.0
版本。
第
2
页
共
11
页
数据结构课程设计
第三章
:
课程设计分析
矩阵的存储
矩阵的结构类似于
c
语言中的二维数组,
所以可以用二维数组来
存储矩阵,
这样
的结构很简便而且也最符合要求。
矩阵的输入与输出
选择
二维数组作为矩阵的存储结构那么可以采用二维数组的输入与输出的方式
来对矩阵进行输
入输出操作。利用两个
for
循环语句可以实现将矩阵中的元素
存
入到二维数组中,
但是要注意的是矩阵的行和列的下标都是从
1
开始的但是二维
数组的行和列的下标
都是从
0
开始所以在编写程序的时候要注意这些差别。
矩阵的乘法运算
矩
阵的乘法运算时线性代数里的知识,
两个
n
阶的矩阵相乘,
设有三个矩阵
A,B,C,
矩阵
A
乘矩阵
B
等于矩阵C,那么矩阵
C
中的第
i
行第
j
列的元素等于矩阵
A
的第
i
行元素和矩
阵
B
的第
j
列
对应的元素的乘积的和。
矩阵的求逆运算
定义一个矩阵的求逆
的运算的函数,
函数名为
inverse
,
函数的参数为数组
B
,
利
用线性代数中的初等变换的知识求矩阵的逆
第四章:课程设计的算法描述
矩阵的存储
printf(
输入矩阵
a:
<
br>请再输入矩阵 <
br>定义一个函数 和
<
br>B
for(i=0;i
{
for(j=0;j
第
3
页
共
11
页
数据结构课程设计
scanf(
}/*
输入矩阵
A*/
printf(
b:
for(i=0;i
{
for(j=0;j
scanf(
}/*
输入矩阵
B*/
矩阵的输出
printf(
请输出矩阵
A
和
p>
B
的乘积矩阵
C:n
for(i=0;i
{
for(j=0;j
printf(
printf(
}
矩阵的乘法
定义一个全局变量
sum
初值为
0.0
;
for(i=0;i
for(j=0;j
for(k=0;k
sum+=a[i][k]*b[k][j];
c[i][j]=sum;
sum=0;
}
/*
矩阵的乘法的函数的内容
*/
矩阵的求逆运算
,
函数名为
inv
erse
;之前定义全局变量
y=1;
矩阵维数
N
,
和整型变量
i,
j,
第
4
页
共
11
页
数据结构课程设计
函数的参数为数组
B
,返回值为数组
的逆矩阵
B
-1
void inverse(float m[N][N])
/*i
nverse
函数是对矩阵的求逆运算的函数
*/
{
int d[N][2*N];
float t,x;
int k;
p>
printf(
原矩阵为:
n
for
(i=0;i
{
for (j=0;j
printf(
printf(
}
/*
将原数组输出
*/
for(i=0;i
for(j=0;j<(2*N);j++)
{
if (j
d[i][j]=m[i][j];
else if (j==N+i)
d[i][j]=1.0;
else
d[i][j]=0.0;
}
/*
将数
组
b
中的元素转存到变量数组
d
中
,
其中
d
中的另
一半元素对应一个单位矩阵
*/
for(i=0;i
{
for(k=0;k
{
if(k!=i)
{
t=d[k][i]/d[i][i];
for(j=0;j<(2*N);j++)
{
x=d[i][j]*t;
d[k][j]=d[k][j]-x;
}
}
第
5
页
共
11
页
-
-
-
-
-
-
-
-
-
上一篇:SCI 和SSCIA&HCI收录与建筑和城市相关刊物
下一篇:广义最小二乘法2