概述
综合程序十——矩阵运算二
1.
编写矩阵定义、初始化函数;
2.
编写矩阵输出函数;
3.
编写求矩阵最大值函数;
4.
编写矩阵元素归一化函数;
5.
编写矩阵转置函数;
6.
编写矩阵求逆函数;(注意要判断逆是否存在)
7.
编写主控函数;
主要函数和结构参考原型如下:
typedefstruct{
double**mat;
introw;
intcol;
}Matrix;
voidInitialMatrix(Matrix*T,introw,intcol);//只分配空间不初始化;
voidInitialMatrixZero(Matrix*T,introw,intcol);//初始化为0
voidInitialMatrixRand(Matrix *T,int row, int col);
//初始化为50以内随机正整数
voidInputMatrix(Matrix*T); //键盘输入矩阵
voidDestroyMatrix(Matrix*T); //释放矩阵空间
voidPrintfMatrix(Matrix*T); //矩阵输出
intMaxMatrix(Matrix*T);
//矩阵元素最大值
void TransMatrix(Matrix*T);
//矩阵转置
void NormMatrix(Matrix*T);
//矩阵归一化
void ReverseMatrix(Matrix*A, Matrix*B);
//B是A的逆矩阵
测试程序参考界面如下所示:
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
3:输入一个矩阵,求矩阵归一化;
4:产生一个随机数矩阵,求矩阵归一化;
3:输入一个矩阵,求矩阵的逆;
4:产生一个随机数矩阵,求矩阵的逆;
0:结束!
源程序清单如下:
#include
#include
#include
#include
//by 郑元帅 UESTC
c语言——EXERCISE
typedef struct{
double**mat;
int
row;
int
col;
}Matrix;
void InitialMatrix(Matrix*T,int row,int
col)//只分配空间不初始化;
{
int
i;
T->mat=(double**)malloc(row*sizeof(double*));
for(i=0;i
T->mat[i]=(double*)malloc(col*sizeof(double));
T->row=row;
T->col=col;
}
void InitialMatrixZero(Matrix*T,int row,int
col)//初始化为0
{
int
i,j;
InitialMatrix(T,row,col);
for(i=0;i
for(j=0;j
T->mat[i][j]=0;
T->row=row;
T->col=col;
}
void InitialMatrixRand(Matrix *T,int row, int col)
//初始化为50以内随机正整数
{
int
i,j;
// srand((unsigned) time(NULL));
InitialMatrix(T,row,col);
for(i=0;i
for(j=0;j
T->mat[i][j]=rand()P+1;
T->row=row;
T->col=col;
}
void InputMatrix(Matrix*T,int row,int
col) //键盘输入矩阵
{
InitialMatrix(T,T->row,T->col);
int
i,j;
for(i=0;irow;i++)
for(j=0;jcol;j++)
scanf("%lf",&T->mat[i][j]);
T->row=row;
T->col=col;
}
void
DestroyMatrix(Matrix*T) //释放矩阵空间
{
int
i;
for(i=0;irow;i++)
free(T->mat[i]);
free(T->mat);
}
void
PrintfMatrix(Matrix*T) //矩阵输出
{
int
i,j;
for(i=0;irow;i++)
{
for(j=0;jcol;j++)
printf("%.2lft",T->mat[i][j]);
printf("n");
}
}
int MaxMatrix(Matrix*T)
{
int
i,j;
int
max;
for(i=0;irow;i++)
{
for(j=0;jcol;j++)
{
if(maxmat[i][j])
max=T->mat[i][j];
}
}
return max;
} //矩阵元素最大值
void TransMatrix(Matrix*T)
{
int
i,j,p;
for(i=0;irow;i++)
{
for(j=i;jcol;j++)
{
p=T->mat[i][j];
T->mat[i][j]=T->mat[j][i];
T->mat[j][i]=p;
}
}
}
//矩阵转置
void NormMatrix(Matrix*T)
{
int
i,j;
int
max;
for(i=0;irow;i++)
{
for(j=0;jcol;j++)
{
if(maxmat[i][j])
max=T->mat[i][j];
}
}
for(i=0;irow;i++)
{
for(j=0;jcol;j++)
{
T->mat[i][j]=T->mat[i][j]/max;
}
}
} //矩阵归一化
int main()
{
int
p=1;
double t;
int
row,col;
int
BeginRow,BeginCol,EndRow,EndCol;
Matrix*A = (Matrix*)malloc(sizeof(Matrix));
InitialMatrixZero(A,row,col);
while(p!=0)
{
printf("矩阵函数测试,请选择功能,输入对应的数字:n");
printf("***************************************************n1:输入一个矩阵,求矩阵元素的最大值;n2:产生一个随机数矩阵,求矩阵元素的最大值;n3:输入一个矩阵,求矩阵转置;n4:产生一个随机数矩阵,求矩阵转置;n5:输入一个矩阵,求矩阵归一化;n6:产生一个随机数矩阵,求矩阵归一化;n0:结束!n");
scanf("%d",&p);
if(p==1)
{ printf("请输入矩阵的行数与列数n");
scanf("%d%d",&row,&col);
printf("请输入一个矩阵:n");
InitialMatrixZero(A,row,col);
InputMatrix(A,row,col);
t=MaxMatrix(A);
printf("n矩阵元素最大值:%lfn",t);
}
else
if(p==2)
{
printf("请输入矩阵的行数与列数n");
scanf("%d%d",&row,&col);
InitialMatrixRand(A,row,col);
printf("随机矩阵如下n");
PrintfMatrix(A);
t=MaxMatrix(A);
printf("n矩阵元素最大值:%lfn",t);
}
else
if(p==3)
{
printf("请输入矩阵的行数与列数n");
scanf("%d%d",&row,&col);
InitialMatrix(A,row,col);
printf("n请输入一个矩阵:n");
InputMatrix(A,row,col);
TransMatrix(A);
printf("转置为:n");
PrintfMatrix(A);
}
else
if(p==4)
{
printf("请输入矩阵的行数与列数n");
scanf("%d%d",&row,&col);
InitialMatrix(A,row,col);
InitialMatrixRand(A,row,col);
printf("A:n");
PrintfMatrix(A);
TransMatrix(A);
printf("转置为:n");
PrintfMatrix(A);
}
else
if(p==5)
{
printf("请输入矩阵的行数与列数n");
scanf("%d%d",&row,&col);
InitialMatrix(A,row,col);
printf("n请输入一个矩阵:n");
InputMatrix(A,row,col);
NormMatrix(A);
printf("n归一化为:n");
PrintfMatrix(A);
}
else
if(p==6)
{
printf("请输入矩阵的行数与列数n");
scanf("%d%d",&row,&col);
InitialMatrix(A,row,col);
InitialMatrixRand(A,row,col);
printf("A:n");
PrintfMatrix(A);
NormMatrix(A);
printf("n归一化为:n");
PrintfMatrix(A);
}
else
if(p==0)
break;
else
printf("输入错误!");
}
return 0;
}
2.
测试
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
1
请输入矩阵的行数与列数
3 3
请输入一个矩阵:
2 2 23 4 5 6 7 8 9
矩阵元素最大值:23.000000
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
2
请输入矩阵的行数与列数
3 3
随机矩阵如下
42.00 18.00 35.00
1.00 20.00 25.00
29.00 9.00 13.00
矩阵元素最大值:42.000000
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
3
请输入矩阵的行数与列数
3 3
请输入一个矩阵:
2 3 4 5 6 7 8 9 3
转置为:
2.00 5.00 8.00
3.00 6.00 9.00
4.00 7.00 3.00
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
4
请输入矩阵的行数与列数
3 3
A:
15.00 6.00 46.00
32.00 28.00 12.00
42.00 46.00 43.00
转置为:
15.00 32.00 42.00
6.00 28.00 46.00
46.00 12.00 43.00
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
5
请输入矩阵的行数与列数
3 3
请输入一个矩阵:
2 3 4 5 6 7 8 9 1
归一化为:
0.22 0.33 0.44
0.56 0.67 0.78
0.89 1.00 0.11
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
6
请输入矩阵的行数与列数
3 3
A:
28.00 37.00 42.00
5.00 3.00 4.00
43.00 33.00 22.00
归一化为:
0.65 0.86 0.98
0.12 0.07 0.09
1.00 0.77 0.51
矩阵函数测试,请选择功能,输入对应的数字:
***************************************************
1:输入一个矩阵,求矩阵元素的最大值;
2:产生一个随机数矩阵,求矩阵元素的最大值;
3:输入一个矩阵,求矩阵转置;
4:产生一个随机数矩阵,求矩阵转置;
5:输入一个矩阵,求矩阵归一化;
6:产生一个随机数矩阵,求矩阵归一化;
0:结束!
0
最后
以上就是甜美微笑为你收集整理的c语言大作业矩阵运算,c语言——综合程序十——矩阵运算二的全部内容,希望文章能够帮你解决c语言大作业矩阵运算,c语言——综合程序十——矩阵运算二所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复