C语言二元一次方程组为什么总是无解

#include<stdio.h>#include<math.h>intmain(void){inta,b,c,d,e,f;scanf("%d%d%d%d%d%d",&a... # include <stdio.h>

# include <math.h>

int main(void)
{
int a, b, c, d, e, f;
scanf("%d %d %d %d %d %d", &a, &b, &c, &d, &e, &f);

double x, y;
double O;
O = a / d;
double X;
X = b / e;
double Z;
Z = c / f;

if (O == X == Z)
{
printf("原方程组有无数的解\n");
}

else if (O == X != Z || O == Z != X || Z == X != O)
{
printf("原方程组无解\n");
}
else
{
x = (c*e - b*f) / (b*d - a*e);
y = (a*f - c*d) / (b*d - a*e);
printf("原方程组有唯一解, x = %f, y = %f\n", x, y);
}

return 0;
}
请问哪里出错了?为什么总是无解?
展开
 我来答
弑绯
2015-08-14 · TA获得超过2500个赞
知道小有建树答主
回答量:893
采纳率:75%
帮助的人:721万
展开全部
# include <stdio.h>
# include <math.h>
int main(void)
{
double a, b, c, d, e, f;
scanf("%lf %lf %lf %lf %lf %lf", &a, &b, &c, &d, &e, &f);

double x, y;
double O;
O = a / d;
double X;
X = b / e;
double Z;
Z = c / f;

if (O == X == Z)
{
printf("原方程组有无数的解\n");
}

else if ((O == X && X != Z) || (O == Z && Z != X) || (Z == X && X != O))
{
printf("原方程组无解\n");
}
else
{
x = (c*e - b*f) / (b*d - a*e);
y = (a*f - c*d) / (b*d - a*e);
printf("原方程组有唯一解, x = %f, y = %f\n", x, y);
}

return 0;
}
  1. 你的定义有问题,a,b,c,d,e,f都是整型,但是X,Y,O是浮点型。你又把整型赋值给浮点型是有问题的。这编译的时候可能没错,能够通过,但实际应用时就可能出错。

  2. else if的判断句有问题修改下

  3. (O == X && X != Z) || (O == Z && Z != X) || (Z == X && X != O)
追问
谢谢,
但是唯一解和无解都对了,但是无数解的情况会出现乱码是怎么回事?
追答

具体情况是什么样的,能截图吗??我这边是能运行

如果不行,你试试把if的判定改成

if (O == X && X == Z && Z == O)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式