当前位置: 代码迷 >> C语言 >> 请教一个二元一次方程组的算法或程序
  详细解决方案

请教一个二元一次方程组的算法或程序

热度:691   发布时间:2006-02-10 23:30:00.0
#include "stdio.h"
main()
{
int a,b,c,d,x,y,m,n;
printf ("请输入a,b,c,d,m,n值,并以空格为分隔符\n\n");
scanf ("%d%d%d%d%d%d",a,b,c,d,m,n);
x=(m*d-n*n)/(a*d-b*c);
y=(m-a*x)/b;
printf ("x=%d,y=%d\n\n",x,y);
}
这样好像更好一点.

如果a,b,c,d,m,n全部等于1的话,就真有无数解了.
哪编程应该怎么编呢?
----------------解决方案--------------------------------------------------------
1、行列式
2、Gauss消元法求解线性方程组
3、上网搜索
不知道是不是
----------------解决方案--------------------------------------------------------
a等于b且c等于d但m!=n 无解
而如果系数成比例,无数解(也就是等式一乘以某个常数就变成等式二)
----------------解决方案--------------------------------------------------------
如果是3元一次方程组或4元一次方程组呢,如3x-5y-6Z=10;5x+8y+10z=0;2x-7y+9z=-21.若象楼上的程序那样,先笔算出结果,然后在把结果公式写到C程序里面吗?这样岂不是很复杂,也没有体现计算机的优势啊?
----------------解决方案--------------------------------------------------------
以下是引用Fjcyz在2006-2-10 23:20:00的发言:
原来如此.

#include "stdio.h"
main()
{
int a,b,c,d,x,y,m,n;
printf ("请输入a,b,c,d,m,n值,并以空格为分隔符\n\n");
scanf ("%d%d%d%d%d%d",a,b,c,d,m,n);
x=(b*n-m*d)/(b*c-a*d);
y=(m-a*x)/b;
printf ("x=%d,y=%d\n\n",x,y);
}

奇怪为什么算出来不对???

#include "stdio.h"
main()
{
int a,b,c,d,x,y,m,n;
printf ("请输入a,b,c,d,m,n值,并以空格为分隔符\n\n");
scanf ("%d%d%d%d%d%d",a,b,c,d,m,n);
if (((b*c-a*d)=0)
{
printf("你输入的方程无解或无唯一解!");
}
else
{
x=(b*n-m*d)/(b*c-a*d);
y=(m-a*x)/b;
printf ("x=%d,y=%d\n\n",x,y);
}
}


----------------解决方案--------------------------------------------------------
^_^

scanf 函数少了 &

原先哪个方程是可以求出来的,就是少了 &,但没有考虑无解情况. ^_^
----------------解决方案--------------------------------------------------------

其实可以用矩阵来算,但是那些矩阵一整套计算是很麻烦的。


----------------解决方案--------------------------------------------------------
  相关解决方案