矩陣的乘法運算
題目要求:有兩個矩陣A1和A2,分别如下:
A1
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;
}
運行結果:
巧用位運算
題目要求:
用位運算操作實現兩個整數的交換。例如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();
}
運行結果:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!