《C語言及程式設計》實踐專案——二維陣列
阿新 • • 發佈:2019-02-04
【專案1-折騰二維陣列】
建立一個5行4列的二維整型陣列,通過初始化,為陣列中的前兩列的10個元素賦初值,然後:
[參考解答]
【專案2-矩陣運算】
在數學中,一個矩陣由若干行和若干列資料組成,可以直接儲存為一個二維陣列。
(1)矩陣相加
兩個矩陣相加,要求其行、列數均相等。運算規則為:一個n行m列的矩陣A加上另一個n行m列的矩陣,得到的結果是一個n行m列的矩陣C,C中的第i行第j列位置上的數等於A和B矩陣第i行第j列上數相加的和。例如:
請程式設計序,實現兩個矩陣的加法。
(2)矩陣相乘
一個n行m列的矩陣可以乘以一個m行p列的矩陣,得到的結果是一個n行p列的矩陣,其中的第i行第j列位置上的數等於前一個矩陣第i行上的m個數與後一個矩陣第j列上的m個數對應相乘後所有m個乘積的和。
例如,下面的算式表示一個2行3列的矩陣乘以3行4列的矩陣,其結果是一個2行4列的矩陣:
按二維陣列習慣,從第0行第0列開始計數,結果中第1行第2列的元素是9,是通過左矩陣中的第1行(2 0 3),乘以右矩陣中的第2列(3 2 1),對應數相乘並加起來,就得到了9,即2×3-0×2+3×1=9。請將這個矩陣乘手工計算一下,規則不復雜。
請程式設計序,實現兩個矩陣的乘法。
[參考解答]
建立一個5行4列的二維整型陣列,通過初始化,為陣列中的前兩列的10個元素賦初值,然後:
- 通過鍵盤輸入,使後兩列的10個元素獲得值;
- 按行序優先輸出陣列元素;
- 將所有元素值乘以3後儲存在陣列中;
- 按列序優先輸出(輸出的第一行是陣列中的第一列……,其實輸出的就是“轉置”);
- 將陣列“倒”著輸出(即最後一行最後一列的最先輸出,第0行第0列的最後輸出);
- 輸出陣列中的所有偶數;
- 輸出所有行列下標之和為3的倍數的元素值。
提示:程式設計時,可以做一點,調一點。參考的執行介面如圖:#include <stdio.h> int main( ) { int i,j; //建立陣列,為陣列中的前兩列的10個元素賦初值 int a[5][4]= {{0,1},{4,5},{8,9},{12,13},{16,17}}; //鍵盤輸入後兩列10個元素的值 printf("請輸入10個整數:\n"); //按行序優先輸出 printf("陣列中的值為:\n"); //將所有元素值乘以3後儲存在陣列中 printf("現在將所有元素乘以3倍..."; //按行序優先輸出 printf("行序優先輸出:\n"); //按列序優先輸出(見題目描述) printf("列序優先輸出:\n"); //將陣列“倒”著輸出(見題目描述) printf("倒著輸出:\n"); //輸出陣列中的所有偶數 printf("陣列中的偶數:\n"); //輸出所有行列下標之和為3的倍數的元素值 printf("行列下標之和為3的倍數的元素:\n"); return 0; }
[參考解答]
【專案2-矩陣運算】
在數學中,一個矩陣由若干行和若干列資料組成,可以直接儲存為一個二維陣列。
(1)矩陣相加
兩個矩陣相加,要求其行、列數均相等。運算規則為:一個n行m列的矩陣A加上另一個n行m列的矩陣,得到的結果是一個n行m列的矩陣C,C中的第i行第j列位置上的數等於A和B矩陣第i行第j列上數相加的和。例如:
請程式設計序,實現兩個矩陣的加法。
(2)矩陣相乘
一個n行m列的矩陣可以乘以一個m行p列的矩陣,得到的結果是一個n行p列的矩陣,其中的第i行第j列位置上的數等於前一個矩陣第i行上的m個數與後一個矩陣第j列上的m個數對應相乘後所有m個乘積的和。
例如,下面的算式表示一個2行3列的矩陣乘以3行4列的矩陣,其結果是一個2行4列的矩陣:
按二維陣列習慣,從第0行第0列開始計數,結果中第1行第2列的元素是9,是通過左矩陣中的第1行(2 0 3),乘以右矩陣中的第2列(3 2 1),對應數相乘並加起來,就得到了9,即2×3-0×2+3×1=9。請將這個矩陣乘手工計算一下,規則不復雜。
請程式設計序,實現兩個矩陣的乘法。
[參考解答]