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