快捷搜索:  汽车  科技

矩阵的乘法运算:矩阵的乘法运算

矩阵的乘法运算:矩阵的乘法运算A矩阵的第1~i行分别与矩阵的n列相乘,得到最终结果。A矩阵的第m行分别和B矩阵的第1~k列相乘,得到cm1 cm2...cmk。编写一个程序,实现这两个矩阵的乘积。题目分析:从上面的计算法则中不难看出,要计算两个矩阵的乘积需要三重循环。即:A矩阵的第m行和B矩阵的第n列各元素相乘,得到cmn。

矩阵的乘法运算

题目要求:有两个矩阵A1和A2,分别如下:

矩阵的乘法运算:矩阵的乘法运算(1)

A1

矩阵的乘法运算:矩阵的乘法运算(2)

A2

编写一个程序,实现这两个矩阵的乘积。

题目分析:

从上面的计算法则中不难看出,要计算两个矩阵的乘积需要三重循环。即:A矩阵的第m行和B矩阵的第n列各元素相乘,得到cmn。

A矩阵的第m行分别和B矩阵的第1~k列相乘,得到cm1 cm2...cmk。

A矩阵的第1~i行分别与矩阵的n列相乘,得到最终结果。

因此,解决矩阵相乘的问题的一种比较简单的方法就是用三重循环嵌套语句。

#include <stdio.h> int main(void) { int A[2][3]={{1 2 3} {4 5 6}}; /*初始化矩阵A*/ int B[3][4]={{1 0 2 3} {4 1 5 6} {6 8 9 0}}; /*初始化矩阵B*/ int C[2][4]={{0 0 0 0} {0 0 0 0}}; int i j k; for(i=0;i<2;i ) for(j=0;j<4;j ) for(k=0;k<3;k ) C[i][j]=C[i][j] A[i][k]*B[k][j] ; printf("The result is\n"); for(i=0;i<2;i ) { for(j=0;j<4;j ) printf("%d " C[i][j]); printf("\n"); } getche(); return 0; }

运行结果:

矩阵的乘法运算:矩阵的乘法运算(3)

巧用位运算

题目要求:

用位运算操作实现两个整数的交换。例如x1=5,x2=10;交换后x1=10,x2=5。

题目分析:

一般情况下要实现两个变量a,b的内容交换,多采用设置一个临时变量t,通过

t=a;

a=b;

b=t;

的方法实现。其实还有一种更好更有效的方法实现这个功能,就是采用位运算的方法。

具体的作法是:

a=a^b;

b=b^a;

a=a^b;

其中^为安位异或运算。这样同样可以达到a、b两值互换的目的。

#include "stdio.h" main() { int a b; a=5; b=10; printf("a=%d b=%d\n" a b); a=a^b; b=b^a; a=a^b; printf("a=%d b=%d\n" a b); getche(); }

运行结果:

矩阵的乘法运算:矩阵的乘法运算(4)

猜您喜欢: