我是靠谱客的博主 甜美微笑,最近开发中收集的这篇文章主要介绍c语言大作业矩阵运算,c语言——综合程序十——矩阵运算二,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

综合程序十——矩阵运算二

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语言——综合程序十——矩阵运算二所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部