c语言程序设计 矩阵加法

c语言程序设计 矩阵加法,第1张

#include<stdio.h>

void main()

{

int a[15][15],i,j,k,t,b

printf("请输入一个3行3列的矩阵:\n")

/*for(i=0i<3i++)

for(j=0j<3j++)

scanf("%d",&a[i][j])

printf("请输入另一个3行3列的矩阵\n")

for(k=0k<3k++)

for(t=0t<3t++)

scanf("%d",&a[k][t])*///<----此处覆盖掉了矩阵1;

for(i=0i<3i++)

for(j=0j<3j++)

scanf("%d",&a[i][j])

printf("请输入另一个3行3列的矩阵\n")

for(k=0k<3k++)

for(t=0t<3t++)

scanf("%d",&a[k+3][t+3])

printf("矩阵【1】\n")

for(i=0i<3i++){

for(j=0j<3j++)

printf("%d ",a[i][j])

printf("\n")

}

printf("矩阵【2】\n")

for(i=0i<3i++){

for(j=0j<3j++)

printf("%d ",a[i+3][j+3])

printf("\n")

}

printf("请选择要进行的运算:1 相加 2 相乘\n")

scanf("%d",&b)

//<----------楼主此处以下的四个for一一嵌套算出来的结果没什么意义。

if(b==1)

{

printf("相加:\n")

for(i=0i<3i++)

for(j=0j<3j++)

a[i][j]=a[i][j]+a[i+3][j+3]

for(i=0i<3i++){

for(j=0j<3j++)

printf("%d\t",a[i][j])

printf("\n")}

}

if(b==2)

{

printf("相乘:\n")

for(i=0i<3i++)

for(j=0j<3j++)

a[i+6][j+6] = a[i][0]*a[3][j+3] + a[i][1]*a[4][j+3] + a[i][2]*a[5][j+3]

for(i=0i<3i++){

for(j=0j<3j++)

printf("%d\t",a[i+6][j+6])

printf("\n")

}

}

}

复制后可直接编译运行,结果如下:格式可自行修改。

先输入行数和列数

#include <stdio.h>

#include <stdlib.h>

void main(void)

{

int i,j

int row

int col

int **matrixA

int **matrixB

int **matrixC

printf("请输入矩阵的行数(row)和列数(col):")

scanf("%d%d",&row,&col)

//给三个矩阵动态分配内存

matrixA = (int**)malloc(row*sizeof(int))

for (i=0i<rowi++)

{

matrixA[i] = (int*)malloc(col*sizeof(int))

}

matrixB = (int**)malloc(row*sizeof(int))

for (i=0i<rowi++)

{

matrixB[i] = (int*)malloc(col*sizeof(int))

}

matrixC = (int**)malloc(row*sizeof(int))

for (i=0i<rowi++)

{

matrixC[i] = (int*)malloc(col*sizeof(int))

}

//A、B随机取值

for (i=0i<rowi++)

{

for (j=0j<colj++)

{

matrixA[i][j] = rand()%100

matrixB[i][j] = rand()%100

}

}

printf("matrixA:\n")

for (i=0i<rowi++)

{

for (j=0j<colj++)

{

printf("%4d", matrixA[i][j])

}

printf("\n")

}

printf("matrixB:\n")

for (i=0i<rowi++)

{

for (j=0j<colj++)

{

printf("%4d", matrixB[i][j])

}

printf("\n")

}

//矩阵A、B相加

for (i=0i<rowi++)

{

matrixC[i][j] = 0

for (j=0j<colj++)

{

matrixC[i][j] = matrixA[i][j] + matrixB[i][j]

}

}

printf("matrixC:\n")

for (i=0i<rowi++)

{

for (j=0j<colj++)

{

printf("%4d", matrixC[i][j])

}

printf("\n")

}

//释放内存

free(matrixA)

free(matrixB)

free(matrixC)

return

}

如果对你有所帮助,请记得采纳最佳答案,谢谢!

矩阵加法运算方法如下:

首先,我们需要明确一下,通常的矩阵加减法被定义在两个相同大小的矩阵之间,大小必须一致为mxn,这样矩阵的加减法才有定义。两个矩阵相加,标记为A+B,得到的新矩阵各元素

其相对应元素相加后的值,如图所示。矩阵的加减法运算法则两个矩阵相加减,即它们相同位置的元素相加减!注意:只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的.

同理,大小相同的两个矩阵相减,标记为A-B,得到的新矩阵各元素为其相对应元素相减后的值,例如下图。另外,还有一种运算叫做直和。直和可以由任何一对矩阵形成,其定义和符号如图所示。

m行n列的两个矩阵相加后得到一个新的m行n列矩阵。在任两个向量空间内取定基底,并取两基底的联集为向量空间直和的基底,则两空间上的线性变换的直和可以表成两矩阵的直和。只要其大小相同的话。A-B内的各元素为其相对应元素相减后的值,且此矩阵会和A、B有相同大小。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11181433.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存