# 圖解資料結構:使用C語言(自我修練) ###### tags: `C learning` Copyright 2021, [月下麒麟](https://hackmd.io/@YMont/note-catalog) --- Reference:[圖解資料結構 使用C語言](https://www.books.com.tw/products/0010840853) ## Chap2 Array **2-2** 求一二階行列式之值。 ```c= #include <stdio.h> #include <stdlib.h> int main(void) { // int arr[2][2] = {{5,7},{4,9}}; int arr[2][2]; signed int sum; int a1, b1, a2, b2; printf("|a1 b1|\n"); printf("|a2 b2|\n"); printf("\n"); for(int i=0; i<2; i++){ for(int j=0; j<2; j++){ printf("keyin:"); scanf("%d",&arr[i][j]); } } printf("\n"); printf("a1:%d ,b1:%d\n",arr[0][0],arr[0][1]); printf("a2:%d ,b2:%d\n",arr[1][0],arr[1][1]); a1 = arr[0][0]; b1 = arr[0][1]; a2 = arr[1][0]; b2 = arr[1][1]; sum = (a1*b2) - (a2*b1); printf("sum:%d\n",sum); return 0; } ``` **2-3** 求三維陣列裡面最小值。 ```c= #include <stdio.h> #include <stdlib.h> int main() { int arr[2][3][4] = {{{22,34,64,15},{212,53,86,19},{28,34,12,32}}, {{22,34,64,10},{212,53,86,66},{28,34,12,11}}}; // printf("%d\n",arr[1][2][3]); int min = arr[0][0][0]; for(int i=0; i<2; i++){ for(int j=0; j<3; j++){ for(int k=0; k<4; k++){ // printf("%d\n",arr[i][j][k]); if(arr[i][j][k] < min){ min = arr[i][j][k]; } } } } printf("min:%d",min); return 0; } ``` **2-4** 求一矩陣相加之值(相加的矩陣大小要相同)。 ```c= #include <stdio.h> #include <stdlib.h> int main() { int arr1[3][3] = {{2,3,6},{2,8,7},{6,3,4}}; int arr2[3][3] = {{1,3,5},{1,2,7},{5,3,9}}; int arr3[3][3] = {0}; for(int i=0; i<3; i++) for(int j=0; j<3; j++){ arr3[i][j] = arr1[i][j] + arr2[i][j]; } for(int m=0; m<3; m++){ for(int n=0; n<3; n++){ printf("%d \t",arr3[m][n]); } printf("\n"); } return 0; } /*Output 3 6 11 3 10 14 11 6 13 */ ``` **2-5** 觀念補充: (矩陣相乘)