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("%.2lf\t",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矩阵元素最大值:%lf\n",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矩阵元素最大值:%lf\n",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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值