---
# System prepended metadata

title: '圖解資料結構:使用C語言(自我修練)'
tags: [C learning]

---

# 圖解資料結構:使用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**
觀念補充: (矩陣相乘)


