行列式的计算问题
//用来计算二、三阶的函数好像没有调用成功,总之不起作用
程序代码:
/************************************************************** /* /* 用于计算线性代数 n阶矩阵 /* 2013-10-12 ***************************************************************/ /* /* 一些声明 /*/ void display_front(); // 用户指南 void *input(double *inp,int flag); // 获取数据 double execute(int flag); // 主执行函数 void display_sterm(double *out,double result, int flag); // 输出结果 #include <stdio.h> #define N 100 #define M 100 double a[N][M]; // 原始矩阵 void main() { double *inp=a[0]; // 用于处理数据 double result; // 储存计算结果 int flag; // 阶数 char ch='a'; // 控制循环的小小元素 display_front(); // 用户指南 do { printf("请输入阶数:\n"); scanf("%d",&flag); // 获取阶数 input(inp,flag); // 获得行列式数据 result=execute(flag); // 计算并返回结果 display_sterm(inp,result,flag); // 输出结果 }while((ch=getch())!='N'); } void display_front() { printf("可以计算n阶行列式\n"); } void *input(double *inp,int flag) { int i,j; int f=0; printf("请键入数据:\n"); for(i=0;i<flag;i++) for(j=0;j<flag;j++) { if(f==flag) { printf("\n"); f=0; } scanf("%lf",inp++); f++; } } /*********************************************************************************/ /*/ /* 本函数的一些子函数的声明 /*/ double one(void); double two(void); double three(void); //double four(void); //double five(void); double execute(int flag) { double result=0; switch(flag) { case 1 : result=one();break; case 2 : result=two();break; case 3 : result=three();break; default : printf("您的要求太高,我无法做到!\n"); } return result; } double one(void) // 一阶算法 { return a[0][0]; } double two(void) // 二阶算法 { return a[0][0]*a[1][1] - a[0][1]*a[1][0]; } double three(void) // 三阶算法 { return a[0][0]*a[1][1]*a[2][2] + a[0][1]*a[1][2]*a[2][0] + a[0][2]*a[1][0]* a[2][1] - a[0][2]*a[1][1]*a[2][0] - a[0][1]*a[1][0]*a[2][2] - a[0][0] *a[2][1]*a[2][2]; } /*********************************************************************************/ void display_sterm(double *out,double result,int flag) { int i,j; int f=0; printf("需要计算的行列式为:\n"); for(i=0;i<flag;i++) for(j=0;j<flag;j++) { printf(" %.0lf",*out++); f++; if(f==flag) { printf("\n"); f=0; } } printf("\n计算结果为:%.2lf\n\n",result); }