矩阵运算综合系统分析解析文档格式.docx
《矩阵运算综合系统分析解析文档格式.docx》由会员分享,可在线阅读,更多相关《矩阵运算综合系统分析解析文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
1、编写源程序的要求:
(1)能够实现任务书中的功能;
(2)尽可能使界面友好、直观、易操作
(3)源程序要有适当的注释,使程序容易阅读。
2、撰写“课程设计报告”,要求如下:
(1)封面:
统一采用《常州大学课程设计说明书》封面格式
(2)任务书
(3)目录
(4)“课程设计报告”正文
3、课程设计验收要求:
(1)运行所设计的系统;
(2)回答有关问题;
(3)提交课程设计报告;
(4)提交源程序。
四、进度安排
1、系统分析、设计准备阶段:
6学时
2、编程调试阶段:
28学时
3、总结和书写课程设计报告阶段:
4学时
4、考核阶段:
2学时
指导教师:
年月日
教研室主任:
年月日
系主任:
一.意义和主要功能:
通过分析、设计、编码、调试和测试此软件的开发过程,独立完成了矩阵运算综合系统。
本系统主要具有以下功能:
1、具有矩阵加法运算功能;
2、具有矩阵乘法运算功能;
3、具有求螺旋矩阵功能;
4、具有矩阵转置功能。
二.功能结构图:
三.使用说明书:
(1)打开程序界面,有加法、乘法、螺旋、转置和退出五个选项,分别由1-5表示。
(2)输入5是退出,程序关闭。
(3)输入1是矩阵加法运算。
(4)输入2是矩阵乘法运算。
(5)输入3是矩阵螺旋运算。
(6)输入4是求矩阵转置运算。
四.源程序代码:
#include"
stdio.h"
#include<
conio.h>
#include<
stdlib.h>
#defineM20
#defineN20
floatA[M][N];
//定义了含有400个浮点型数组元素的二维数组
floatB[M][N];
floatC[M][N];
inti,j,m,n,p,q,k,x;
voidinput()
{
printf("
请输入矩阵A的行数和列数(用逗号隔开):
"
);
scanf("
%d,%d"
&
i,&
j);
printf("
请输入矩阵B的行数和列数(用逗号隔开):
);
m,&
n);
while(i!
=m||j!
=n)//判断是否满足加法运算条件:
既两个矩阵的行、列数是否相等
{
printf("
***对不起,您输入的两个矩阵不能相加,两个矩阵的行列数必须相等,请重新输入.***\n\n"
scanf("
}
请输入矩阵A:
\n"
//输入矩阵A的元素
for(p=0;
p<
i;
p++)
for(q=0;
q<
j;
q++)
scanf("
%f"
A[p][q]);
输出矩阵A:
//输出矩阵A
for(p=0;
for(q=0;
{
printf("
%10.2f"
A[p][q]);
if((q+1)%j==0)
printf("
}
printf("
请输入矩阵B:
//输入矩阵B的元素
for(p=0;
for(q=0;
scanf("
B[p][q]);
输出矩阵B:
//输出矩阵B
for(p=0;
for(q=0;
{
printf("
B[p][q]);
if((q+1)%j==0)
printf("
}
矩阵A+矩阵B为:
//进行两个矩阵相加计算
for(p=0;
for(q=0;
C[p][q]=A[p][q]+B[p][q];
for(p=0;
for(q=0;
{
printf("
C[p][q]);
if((q+1)%j==0)
printf("
}
getchar();
}
voiddel()
while(j!
=m)//判定两个矩阵能否相乘:
A的列数必须等于B的行数
{
***对不起,您输入的两个矩阵不能相乘,B矩阵的行数必须和A矩阵的列数相等,请重试.***\n"
请重新输入矩阵B的行数和列数(用逗号隔开):
//输出矩阵A
//输入矩阵B的元素
矩阵A*矩阵B为:
//计算两个矩阵相乘
n;
q++)
{
C[p][q]=0;
for(k=0;
k<
j;
k++)
C[p][q]+=A[p][k]*B[k][q];
}
if((q+1)%n==0)
voidfind()
intarry[N][N]={0};
inti,j,a,b;
intn=1;
intL;
L=(N+1)/2;
for(i=0;
i<
L;
i++)
{
b=i;
for(a=i;
a<
N-i;
a++)
arry[a][b]=n++;
}
a--;
for(b=i+1;
b<
b++)
b--;
for(a=N-i-2;
a>
=i;
a--)
a++;
for(b=N-i-2;
b>
b--)
for(a=0;
N;
{
for(b=0;
printf("
%5d"
arry[a][b]);
\n\n"
getchar();
voidarrange()
//输入矩阵A的元素
输出矩阵A\n"
p++)//进行转置
B[q][p]=A[p][q];
输出矩阵A的转置矩阵:
if((q+1)%i==0)
getchar();
voidfind();
voidinput();
voiddel();
voidarrange();
voidmain()
{charc;
inti;
do
system("
cls"
for(i=0;
80;
printf("
*"
\t1:
矩阵加法运算\n"
\t2:
矩阵乘法运算\n"
\t3:
矩阵螺旋运算\n"
\t4:
矩阵转置运算\n"
\t5:
退出\n"
\t请选择输入选项[1\\2\\3\\4\\5]:
do
{
c=getchar();
}while(c!
='
1'
&
c!
2'
3'
4'
5'
getchar();
switch(c)
{case'
:
input();
break;
case'
del();
find();
arrange();
exit(0);
}
按任意键返回主菜单:
}while
(1);
五.实习日志:
6.24
题目要求中的菜单的代码不能加载
6.25
不清楚有数组参数的子函数要怎么声明
6.26
文件指针不能和变量赋值报错
6.27
从网上看到了类似的代码,
重新定义了函数之后引用了
六.心得体会:
C语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。
要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。
只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。
这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。
七.参考文献:
无