c语言程序设计 三元一次方程组求解

如题所述

第1个回答  推荐于2017-09-12
不知道你知不知道行列式
算法:
定义运算|a b c|
|d e f|=aei+bfg+cdh-afh-bdi-ceg
|g h i|
三元一次方程组
ax+by+cz=d
ex+fy+gz=h
ix+jy+kz=l
|a b c|
令M=|e f g|
|i j k|

|d b c|
M1=|h f g|
|l j k|

|a d c|
M2=|e h g|
|i l k|

|a b d|
M3=|e f h|
|i j l|
则x=M1/M
y=M2/M
z=M3/M
程序:
#include<stdio.h>
int fx(int a,int b,int c,
int d,int e,int f,
int g,int h,int i);
void main()
{int a,b,c,d,e,f,g,h,i,j,k,l,x,y,z,m;
printf("a,b,c,d\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("e,f,g,h\n");
scanf("%d,%d,%d,%d",&e,&f,&g,&h);
printf("i,j,k,l\n");
scanf("%d,%d,%d,%d",&i,&j,&k,&l);
m=fx(a,b,c,e,f,g,i,j,k);
if(m==0)
{printf("x=0,y=0,z=0\n");
return ;
}
x=fx(d,b,c,h,f,g,l,j,k)/(float)m;
y=fx(a,d,c,e,h,g,i,l,k)/(float)m;
z=fx(a,b,d,e,f,h,i,j,l)/(float)m;
printf("x=%d,y=%d,z=%d\n",x,y,z);
}

int fx(int a,int b,int c,
int d,int e,int f,
int g,int h,int i)
{int result;
result=a*e*i+b*f*g+c*d*h-a*f*h-b*d*i-c*e*g;
return result;
}本回答被提问者采纳
第2个回答  2010-04-26
行列式好点啊,呵呵