看板 NCTU-STAT98G 關於我們 聯絡資訊
EX1: 將pc1.txt的矩陣,依下列規則處理: 1. 將第一行的第一個非0元素所處的列 調到第一列 2. 將第二行的第一個非0元素所處的列 掉到第二列 3. 如果第K行的第K列為非0元素 則不必對調 程式碼如下: #include <stdio.h> #include "matrix.h" #include <stdlib.h> #include <math.h> FILE *in; int main() { int i,j,k,temp; double **A; A = (double **) malloc (5*sizeof(*A)); *A = (double *) malloc (5*5*sizeof(**A)); for (i=0;i<5;i++) *(A+i) = *A+5*i; in=fopen("pc1.txt","rt"); for (i=0;i<5;i++) { for (j=0;j<5;j++) { fscanf(in,"%lf",&A[i][j]); printf("%8.4lf",A[i][j]); //這邊讀文字檔的方式為一次讀一個 } printf("\n"); } for (i=0;i<5;i++) { if (A[i][i]==0) { //i行i列的數字為0的時候 才需要與第一個非0值交換 for (j=0;j<5;j++) { if (A[j][i]!=0) { // 找出i行的第1個非0值 其列數為第j列 for (k=0;k<5;k++) { temp = A[i][k]; A[i][k] = A[j][k]; A[j][k] = temp; //這邊是大家應該很熟悉的兩列互調的過程 } break; /* 跳出所在的迴圈, 這邊是跳出for (j=0;j<5;j++)回圈 去執行外層的for (i=0;i<5;i++) 回圈*/ } } } printf("the matrix is:\n"); matrix_print(5,5,A); system("pause"); } fclose(in); return 0; } pc1.txt檔案內容如下 0 0 0 0 5 1 0 2 8 0 0 0 4 0 6 3 3 5 2 3 2 1 0 2 1 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.48.157