Programming Practice

假設 AB、和Cn´n 的方陣,且 A 是下三角形方陣, B 是上三角形方陣, C=A´B,即

使用動態記憶體分配 (dynamic memory allocation),寫一個C語言的程式以執行以下的步驟:

  1. 輸入一個正整數 n

  2. 使用副程式  malloc() 以產生方陣 AB、和 C 的記憶體空間 ( A B 方陣只產生非 0 的元素)。依照上面公式的定義,當 0£i<n,方陣 A i 列只有 i+1 個非 0 的元素,方陣 Bi 列只有 n-i 個非 0 的元素,方陣 C 每一列都有 n 個元素。

  3. 使用副程式 rand() 隨機產生矩陣 A B 非 0元素的值 (假設AB 元素的值在 1 和 100 之間)。

  4. 計算矩陣 C 元素的值 (不可計算 A B 方陣為 0 的元素)。依照上面公式計算 ci,j 的值。請注意,方陣 B 元素的行索引需作適當調整,因為方陣 Bi 列的索引 0 的元素是 bi,i 的值。

  5. 輸出矩陣 AB、和 C ( A B 方陣為 0 的元素輸出空白)。

以下為程式執行範例:

Enter matrix size n: 6

Matrix A:
58
 8  85
 7  83  51
20  55  48  46
53  19  12  71  91
75  48  97  92   6  59

Matrix B:
15  75  59  53   1  82
    18  64  91  59  53
        80   9  93  33
            74  67  44
                37  41
                     6

Matrix C:
   870   4350   3422   3074     58   4756
   120   2130   5912   8159   5023   5161
   105   2019   9805   8383   9647   6656
   300   2490   8540   9901  10811   8163
   795   4317   5303   9900  10414  12604
  1125   6489  15257  16024  18314  16543