用下面的程序求方程组 a*x+b*y=10,
c*x+d*y=20 怎么会没有答案,其中a,b,c,d我是从键盘输入的5,6,7,8
main()
{float a,b,c,d,x,y,m=10,n=20;
scanf("%f %f %f %f",&a,&b,&c,&d);
m=a*x+b*y;
n=c*x+d*y;
if((a*d-c*b)!=0)
{x=(m*d-b*n)/(a*d-c*b);
y=(n*a-m*c)/(a*d-c*b);
printf("x =%f y =%f\n",x,y);}
else
printf("ERROR\n");
getch();
}
m=a*x+b*y;
n=c*x+d*y;
以上两句有问题
x,y是未知数,所以a*x+b*y未知,而且将m的值覆盖了,m和n变成了一个未知数
参考代码
int main()
{
float a,b,c,d,x,y,m=10,n=20;
scanf("%f%f%f%f",&a,&b,&c,&d);
if((a*d-b*c)!=0){
y=(20*a-10*c)/(a*d-b*c);
x=(20*b-10*d)/(b*c-a*d);
printf("x=%f y=%f\n",x,y);
}
printf("Error\n");
getch();
return 0;
}
//用下面的程序求方程组 a*x+b*y=10,
//c*x+d*y=20 怎么会没有答案,其中a,b,c,d我是从键盘输入的5,6,7,8
#include <stdio.h>
void main()
{
float a,b,c,d,x,y,m=10,n=20;
scanf("%f %f %f %f",&a,&b,&c,&d);
if( (a*d-c*b) != 0 )
{
x=(m*d-b*n)/(a*d-c*b);
y=(n*a-m*c)/(a*d-c*b);
printf("x =%2.2f y =%2.2f\n",x,y);
printf("%2.2f*%2.2f+%2.2f*%2.2f=10\n", a, x, b, y);
printf("%2.2f*%2.2f+%2.2f*%2.2f=20\n", c, x, d, y);
}
else
{
printf( "%2.2f*%2.2f-%2.2f*%2.2f=0\n", a, d, c, b);
printf("ERROR\n");
}
// getch();
}
在你的基础上改了一点点。。
可以。。