include stdio h include stdlib h int main
解答: #include <stdio. h> #include <stdlib. h> int main() { int arr[2][2]; int sum; printf("|a 1 b 1|n"); printf("|a 2 b 2|n"); printf("請輸入a 1: "); scanf("%d", &arr[0][0]); printf("請輸入b 1: "); scanf("%d", &arr[0][1]); printf("請輸入a 2: "); scanf("%d", &arr[1][0]); printf("請輸入b 2: "); scanf("%d", &arr[1][1]); sum = arr[0][0]*arr[1][1]-arr[0][1]*arr[1][0]; /* 求二階行列式的值 */ printf("|%d %d|n", arr[0][0], arr[0][1]); printf("|%d %d|n", arr[1][0], arr[1][1]); printf("sum=%dn", sum); system("pause"); return 0; } 2 -2 陣列 範例 2. 2. 9 利用二維陣列的方式來撰寫一個求二階行列式的 範例。二階行列式的計算公式為:a 1*b 2 -a 2*b 1。 27
#include <stdio. h> #include <stdlib. h> 2 -2 陣列 int main() { char Name[5][10]={"John", 範例 2. 2. 20 "Mary", 假設一個字串陣列元素內容如下: "Wilson", "Candy", "Mary", "Allen"}; /* 字串陣列的宣告 */ char Name[5][10]={"John", int i; "Wilson", "Candy", for(i=0; i<5; i++) "Allen"}; // 字串陣列的宣告 printf("Name[%d]=%sn", i, Name[i]); /* 印出字串陣列內容 */ 請設計一C程式來說明Name字串陣列的宣告與輸出 方式 printf("n"); system("pause"); return 0; } 53
#include <stdio. h> #include <stdlib. h> int main() { int arr. B[4][4], i, j; int arr. A[4][4]={ {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16} }; printf("[請輸入矩陣內容]n"); for(i=0; i<4; i++) { for(j=0; j<4; j++) { printf("%dt", arr. A[i][j]); } printf("n"); } /*進行矩陣轉置的動作*/ for(i=0; i<4; i++) for(j=0; j<4; j++) arr. B[i][j]=arr. A[j][i]; printf("[轉置矩陣內容為]n"); for(i=0; i<4; i++) { for(j=0; j<4; j++) { printf("%dt", arr. B[i][j]); } printf("n"); /* 列印轉置矩陣內容 */ } system("pause"); 2 -3 矩陣 範例 2. 3. 1 請設計一C程式來實作一4*4二維陣列的轉置矩陣 60
/* [示範]: 運算兩個矩陣相乘的結果 */ #include <stdio. h> #include <stdlib. h> #include <conio. h> void Matrix. Multiply(int*, int, int); int main() { int *A, *B, *C; int M, N, P; int i, j; printf("請輸入矩陣A的維數(M, N): n"); printf("M= "); scanf("%d", &M); printf("N= "); scanf("%d", &N); A = (int*)malloc(M*N*sizeof(int)); printf("[請輸入矩陣A的各個元素]n"); for(i=0; i<M; i++) for(j=0; j<N; j++) { printf("a%d%d=", i, j); scanf("%d", &A[i*N+j]); } printf("請輸入矩陣B的維數(N, P): "); printf("n. N= "); scanf("%d", &N); printf("P= "); scanf("%d", &P); B = (int*)malloc(N*P*sizeof(int)); 2 -3 矩陣 範例 2. 3. 3 請設計一C程式來實作下列兩個可自行輸入矩陣維 數的相乘過程,並顯示相乘後的結果。 續下頁 64
printf("[請輸入矩陣B的各個元素]n"); for(i=0; i<N; i++) for(j=0; j<P; j++) { printf("b%d%d=", i, j); scanf("%d", &B[i*P+j]); 2 -3 矩陣 } C = (int*)malloc(M*P*sizeof(int)); Matrix. Multiply(A, B, C, M, N, P); printf("[Ax. B的結果是]n"); for(i=0; i<M; i++) { for(j=0; j<P; j++) printf("%dt", C[i*P+j]); printf("n"); } system("pause"); } void Matrix. Multiply(int* arr. A, int* arr. B, int* arr. C, int M, int N, int P) { int i, j, k, Temp; if(M<=0||N<=0||P<=0) { printf("[錯誤: 維數M, N, P必須大於 0]n"); return; } for(i=0; i<M; i++) for(j=0; j<P; j++) { Temp = 0; for(k=0; k<N; k++) Temp = Temp + arr. A[i*N+k]*arr. B[k*P+j]; arr. C[i*P+j] = Temp; } } 65
{ 2 -3 矩陣 Compress[temp][0]=i; Compress[temp][1]=j; Compress[temp][2]=Sparse[i][j]; temp++; } printf("[稀疏矩陣壓縮後的內容]n"); /*印出壓縮矩陣的各個元素*/ for (i=0; i<NONZERO+1; i++) { for (j=0; j<3; j++) printf("[%d] ", Compress[i][j]); printf("n"); } system("pause"); } 70
for ( i = 0 ; i < ARRAY_SIZE ; i++ ) { for ( j = 0 ; j < ARRAY_SIZE ; j++ ) { if(A[i][j]!=0) B[index++]=A[i][j]; 2 -3 矩陣 } } printf("=====================n"); printf("以一維的方式表示:n"); printf("t["); for ( i = 0 ; i < ARRAY_SIZE ; i++ ) { for ( j = i ; j < ARRAY_SIZE ; j++ ) printf(" %d", get. Value(i, j)); } printf(" ]"); printf("n"); system("pause"); } int get. Value(int i, int j) { int index = ARRAY_SIZE*i - i*(i+1)/2 + j; return B[index]; } 76
for ( i = 0 ; i < ARRAY_SIZE ; i++ ) { for ( j = 0 ; j < ARRAY_SIZE ; j++ ) { if(A[i][j]!=0) B[index++]=A[i][j]; 2 -3 矩陣 } } printf("=====================n"); printf("以一維的方式表示:n"); printf("t["); for ( i = 0 ; i < ARRAY_SIZE ; i++ ) { for ( j = i ; j < ARRAY_SIZE ; j++ ) printf(" %d", get. Value(i, j)); } printf(" ]"); printf("n"); system("pause"); } int get. Value(int i, int j) { int index = ARRAY_SIZE*i-i*(i+1)/2+j; return B[index]; } 84
- Slides: 90