C語言之兩矩陣乘法的實現
首先我們要清楚矩陣乘法實現需要滿足的條件, 矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數(column)和第二個矩陣的行數(row)相同時才有意義[1] 。一般單指矩陣乘積時,指的便是一般矩陣乘積。一個m×n的矩陣就是m×n個數排成m行n列的一個數陣。
//關於任意兩個矩陣的乘法運算
//關於任意兩個矩陣的乘法運算
#include<stdio.h>
#include<stdlib.h>
#define MAX 10
matrix_multiplication(int line1, int column1, int column2, int arr1[MAX][MAX], int arr2[MAX][MAX], int arr3[MAX][MAX])
{
int i, j, k;
int ret;
for (i = 0; i < line1; i++)
{
for (j = 0; j < column1; j++)
{
ret = 0;
for (k = 0; k < column2+1; k++)
{
ret += arr1[i][k] * arr2[k][j]; //按照矩陣的乘法規則進行運算
}
arr3[i][j] = ret;
}
}
}
int main()
{
int line1, column1, column2;
int i, j;
int temp;
int arr1[MAX][MAX], arr2[MAX][MAX], arr3[MAX][MAX];
printf("輸入第一個矩陣的行數:\n");
scanf("%d", &line1);
printf("輸入第一個矩陣的列數:\n");
scanf("%d", &column1);
printf ("輸入第一個矩陣的列數:\n");
scanf("%d", &column2);
printf("輸入第一個矩陣的元素(%d*%d):\n",line1,column1);
for (i = 0; i < line1; i++)
{
for (j = 0; j < column1; j++)
{
scanf("%d", &temp);
arr1[i][j] = temp;
}
}
printf("輸入第二個矩陣的元素(%d*%d):\n", column1, column2); //因為在這裡矩陣的乘法會要求第一個的列與第二個行相等
for (i = 0; i < column1; i++)
{
for (j = 0; j < column2; j++)
{
scanf("%d", &temp);
arr2[i][j] = temp;
}
}
matrix_multiplication(line1, column1, column2, arr1, arr2, arr3);
printf("輸出的兩個矩陣的乘法運算的結果是:\n");
for (i = 0; i<line1; i++)
{
for (j = 0; j<column2; j++)
printf("%ld ", arr3[i][j]);
printf("\n");
}
system("pause");
return 0;
}
執行結果如圖:
程式碼如果有問題,希望大家指出。
相關推薦
C語言之兩矩陣乘法的實現
首先我們要清楚矩陣乘法實現需要滿足的條件, 矩陣相乘最重要的方法是一般矩陣乘積。它只有在第一個矩陣的列數(column)和第二個矩陣的行數(row)相同時才有意義[1] 。一般單指矩陣乘積時,指的便是一般矩陣乘積。一個m×n的矩陣就是m×n個數排成m行n列的一
C語言之俄羅斯方塊遊戲實現
來自《C語言課程設計案例精編》,蠻好的,可以參照。 /* *俄羅斯方塊源程式 */ #include <stdio.h> #include <stdlib.h> #include <dos.h> #include <grap
C語言之三字棋的實現及擴充套件
C語言之三字棋的實現及擴充套件 在我們學習完陣列之後,我們完全可以利用陣列相關知識來寫一個微小型的遊戲,比如說今天所說的——三子棋。 大綱: 檔案組成 實現 完整程式碼展示 擴充套件 即: &n
C語言之最好理解的通過函式指標作為引數實現回撥函式
1、函式指標回撥解釋 回撥函式就是一個通過函式指標呼叫的函式。如果你把函式的指標(地址)作為引數傳遞給另一個函式,當這個指標被用來呼叫其所指向的函式時,我們就說這是回撥函式 2、程式碼實現 #i
C語言之利用函式交換兩個數的值
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> void Swap(int *px,int *py) { int tmp = *p
C語言之linux核心實現平方根計算演算法
關於平方根的計算,在linux核心中也有實現,就像math.h數學庫裡的sqrt這個函式一樣。 平方根的公式定義: 如果一個非負數x的平方等於a,即 , ,那麼這個非負
C語言之指標專題一:指標變數和指標所指向的記憶體空間是兩個不同的概念
指標變數和指標所指向的記憶體空間是兩個不同的概念 char*p = "123456";//p是一個指標變數存放在臨時棧區,"123456"是一個字串常量存放在常量區,變數p儲存的是字串的地址 char*str = (char*)malloc(100);//將分配的100位
C語言 求兩個矩陣相乘
矩陣相乘肯定都不陌生,那麼如何用C語言實現矩陣相乘呢?先看下面兩個矩陣相乘:矩陣A和B都是兩行兩列,矩陣相乘時,A的行元素乘以B的列元素,然後相加。即20*2+5*1=45作為C11(矩陣C的第一行第一列)20*1+5*4=40作為C12(矩陣C的第一行第二列)15*2+
C語言之基本演算法33—矩陣的基本運算
//矩陣基礎 /* ================================================================== 題目:輸入矩陣a,b,輸出a,b,a的轉置矩陣d,a*b,b+d=e; ========================
C語言之實現隨機數產生演算法
隨機數,也就是在不同的時刻產生不同的數值。在UNIX作業系統和window的作業系統上,我們知道有一個函式rand,它就是用來產生隨機數的函式API介面,那麼它的原理如何實現? 如果約定a1=f(se
c語言之合併排序實現
#include <stdio.h> #include <stdlib.h> #include <string.h> //將兩個有序序列合併為一個有序序列 void merge(int a[],int left_pos,int right
C語言之定義一個函式,實現對字串做如下操作:當字元為字母時,大小寫互換,當字元為數字時,原樣輸出,當有其它字元出現時,結束操作,返回已處理的字串
Action(){ char str[]={"tEst234%^road"};int len = sizeof(str)/sizeof(char);//strTest2呼叫函式lr_output_message("%s",strTest2(str,len)); r
資料結構學習之路(一)C語言對陣列的簡單實現
以下的程式只是在觀看郝斌老師講解的(C語言資料結構)之後自己做得簡單練習。# include <stdio.h> # include <stdlib.h> typedef struct MyArray{ int * pBase; //存放陣列第一個
C語言之靜態,動態順序表的實現
在學習了C語言之後,我們先來了解一下簡單的資料結構,順序表和連結串列。 順序表和連結串列都屬於線性資料結構。順序表的底層相當於一個數組,因為它的空間是一段地址連續的儲存單元;連結串列的底層不需要所有的空間都連續,只要通過指標就可以找到下一個儲存空間。下面
C語言之單位下三角矩陣求逆
#include<stdio.h> int main(){ //矩陣儲存在二位陣列也可以隨機生成 double l[4][4]={1,0,0,0,2,1,0,0,3,2,1,0,5,4,2,1}; long bs=4,i,j,n; //矩陣第一列求逆
C語言之linux核心可變參實現printf,sprintf
昨天,我發表了一篇用可變參實現的fprintf函式,其實說實話還不完全是可變參實現的,因為用到了FILE * 這樣的指標,需要包含stdio.h這個標頭檔案才能實現這個函式,今天我們就來看看,如何拋棄stdio.h,全0開始實現printf , sprintf ,
OpenCL之矩陣乘法實現
kernel 在opencl中,一般最優價值的就是kernel,前面寫的配置檔案基本沒有很大的差別,主要是kernel寫法上。其中矩陣運算又是最能體現opencl價值的地方。先上寫的kernel: __kernel void matrix_mult
C語言動態二維陣列實現矩陣的相乘
c語言動態二維陣列實現矩陣相乘 如何申請動態二維陣列,程式碼如下 該方法是最靈活的,可以任意指定行數和列數 /* *申請a陣列的記憶體* */ /*先申請每一行指標的記憶體*/ a =
c語言判斷兩個矩陣是否相等(行列相同的矩陣)
矩陣 out amp 判斷 一個 void 列數 。。 NPU #include<stdio.h>void input(int n, int m, int a[20][20])//輸入矩陣元素{int i, j;for (i = 0; i < n; i++
C語言之三字棋的簡單實現及擴充套件
C語言之三字棋的實現及擴充套件 在我們學習完陣列之後,我們完全可以利用陣列相關知識來寫一個微小型的遊戲,比如說今天所說的——三子棋。 大綱: 檔案組成 實現 完整程式碼展示 擴充套件 即: &n