
1 9 7
2 3 8
4 5 6
n=3,则矩阵值变为:
1 9 7
6 9 8
12 15 18
注:二维数组下三角元素每行最后元素的列标和该列的列号一致
#include <stdio.h>
int juzhen(int a[][3],int n)
{
int i,j
for (i=1i<3i++)
for (j=0j<=ij++)
a[i][j]=a[i][j]*n
}
main()
{
int i,j,a[3][3],m
clrscr()
printf("please enter 9 numbers :\n")
for (i=0i<3i++)
for (j=0j<3j++)
scanf("%d",&a[i][j])
printf("the old ju zhen is:\n")
for (i=0i<3i++)
{
for (j=0j<3j++)
printf("%3d",a[i][j])
printf("\n")
}
printf("please enter a int number:\n")
scanf("%d",&m)
juzhen (a,m)
printf("the new ju zhen is:\n")
for (i=0i<3i++)
{
for (j=0j<3j++)
printf("%3d",a[i][j])
printf("\n")
}
}
2,请编写函数juzhen,该函数的功能是:将三行四列矩阵x乘以四行三列矩阵y,结果放在三行三列矩阵中。矩阵相乘的基本方法是:矩阵Xy中行列下标分别为i,j的元素的值,是矩阵X中第i行上四个元素与矩阵Y中第j列上四个元素对应相乘的积。
X和Y矩阵原型可运行后看到!
#include <conio.h>
#include <stdio.h>
void juzhen (int a[3][4],int b[4][3],int ab[3][3])
{
int i,j,z
for (i=0i<3i++)
for (j=0j<4j++)
for (z=0z<3z++)
ab[i][z]=ab[i][z]+a[i][j]*b[j][z]/*此得为要填写的内容*/
}
main()
{
int x[3][4]={1,0,1,1,2,1,0,1,1,2,0,3}
int y[4][3]={1,1,1,0,0,0,2,1,1,1,1,3}
int xy[3][3]={0},i,j
clrscr()
juzhen (x,y,xy)
printf("x ju zhen is:\n")
for (i=0i<3i++)
{
for (j=0j<4j++)
printf("%3d",x[i][j])
printf("\n")
}
printf("y ju zhen is:\n")
for (i=0i<4i++)
{
for (j=0j<3j++)
printf("%3d",y[i][j])
printf("\n")
}
printf("xy ju zhen is:\n")
for (i=0i<3i++)
{
for (j=0j<3j++)
printf("%3d",xy[i][j])
printf("\n")
}
}
由于你没有说要求,我就写了两个,这是两道比较精典的求c语言矩阵乘法程序
矩阵相乘需要前面矩阵的行数与后面矩阵的列数相同方可相乘。
第一步先将前面矩阵的每一行分别与后面矩阵的列相乘作为结果矩阵的行列。
第二步算出结果即可。
扩展资料:
矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义 。一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑的集中到了一起,所以有时候可以简便地表示一些复杂的模型。
1、当矩阵A的列数等于矩阵B的行数时,A与B可以相乘。
2、矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。
3、乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。
参考资料:百度百科-矩阵相乘
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)