- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
石大远程在线考试《数据结构课程设计》_85201441854054813
中国石油大学(北京)远程教育学院
期 末 考 试
typedef struct{
int i; //非零元的行下标
int j; //非零元的列下标
int e; //矩阵非零元
}Triple;
稀疏矩阵采用三元组顺序表存储:
#define MSXSIZE 12500 //假设非零元个数的最大值为200
#define MAXRC 10 //假定矩阵的最大行数为10
typedef struct
{
int mu ; //矩阵的行数
int nu ; //矩阵的列数
int tu ; //矩阵的非零元素个数
Triple data[MAXSIZE+1]; //非零元三元组表,data[0]没有用
int rpos[MAXRC+1]; //各行第一个非零元素的位置表
}Tabletype;
系统主要函数及功能如下:
Menu( ):主控菜单,接收用户的选项;
Input_Matrix( ):输入矩阵;
Print_matrix( ):输出矩阵;
Cal_matrix( ):计算矩阵每行第一个非零元在三元组中的位序号;
TransposeMatrix( ):矩阵转置;
Add_Matrix( ):矩阵加法运算;
Sub_Matrix( ):矩阵减法运算;
Multi_Matrix( ):矩阵乘法运算。
模块的调用关系如图1所示。
图1 程序调用模块示意图
2.3详细设计
1. 主函数设计
//*****************************************
//* 矩阵运算主函数 *
//*****************************************
主函数中,实现用户菜单菜单的打印,并根据用户的选项执行相应的功能,主函数力求简洁、清晰。
void main( )
{
num=Menu(); //打印主菜单
while(num)
{
switch(num)
{
case 1:
Multi_Matrix(); //矩阵相乘
break;
case 2:
TransposeMatrix(); //矩阵转置
break;
case 3:
Add_Matrix(); //矩阵加法
break;
case 4:
Sub_Matrix(); //矩阵减法
case 0:
break;
}//switch
num=Menu();
}//while
}
2. 主菜单设计
主控菜单是用来输出提示信息和处理输入,此函数返回用户的选项,提供给main函数中的switch语句。对于不符合要求的选项,提示输入错误并要求用户重新输入。将此函数与main函数合在一起,编译运行程序,即可检查并验证菜单选项是否正确。
主菜单如下:
//*****************************************
//* 打印主控菜单函数 *
//*****************************************
int menu( )
{
printf(\n 主菜单);
printf(\n*********************);
printf(\n 1. 矩阵乘法);
printf(\n 2. 矩阵转置);
printf(\n 3. 矩阵加法);
printf(\n 4. 矩阵减法);
printf(\n 0. 退出);
printf(\n*********************);
scanf(%d,num);
while(num0||num4) //输入非法,重新输入
scanf(%d,num);
return num;
}
3. 矩阵乘法运算函数
//*****************************************
//* 矩阵乘法运算算法 *
//*****************************************
Status Multi_Matrix()
{
Input_Matrix(a); //输入矩阵a
Input_Matrix(b); //输入矩阵b
Cal_matrix(a); //计算矩阵a每行第一个非零元的位序号
Cal
文档评论(0)