1 #include <stdio.h> 2 #include <stdlib.h> 3 int main(int argc, char **argv) 4 { 5 if(2!=argc) 6 { 7 puts("Arguments Error!"); 8 exit(-1); 9 } 10 FILE *fp = fopen(argv[1], "r"); 11 int i = 0; 12 char ch = fgetc(fp); 13 while ('\n' != ch) 14 { 15 if (ch == ',') 16 i++; 17 ch = fgetc(fp); 18 } 19 int n = i + 1; //n是阶数 20 double *mat = (double *)calloc(n * n, 8); 21 22 fseek(fp, 0, SEEK_SET); 23 i = 0; 24 while (EOF != fscanf(fp, "%lf,", mat+i)) 25 i++; 26 27 //使用三角阵进行计算 28 int j, k; 29 for (j = 1; j<n; j++) 30 for (k = 0; k < j; k++) 31 { 32 double times = mat[j*n + k] / mat[k*n + k]; 33 for (i = 0; i < n; i++) 34 { 35 mat[j*n + i] -= times * mat[k*n + i]; 36 } 37 } 38 double sum = 1; 39 for (i = 0; i<n; i++) 40 sum *= mat[i*n + i]; 41 printf("%f", sum); 42 43 free(mat); 44 return 0; 45 }