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有相同大小。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)