1. 程式人生 > >《C語言及程式設計》實踐專案——二維陣列

《C語言及程式設計》實踐專案——二維陣列

【專案1-折騰二維陣列】
建立一個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。請將這個矩陣乘手工計算一下,規則不復雜。
  請程式設計序,實現兩個矩陣的乘法。
[參考解答]