作业帮 > 综合 > 作业

一个C语言求解二元一次方程根,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/03 12:39:49
一个C语言求解二元一次方程根,
以下是我在VC6.0中写的代码,编译通过,但是运行时就出问题了,例如输入a=2,b=2,c=4时,运行结果就是“方程有两个解,x1=..,x2=...” 方程只有一个
解x=..",一看就知道这明显是错误的,但是我实在不知编写哪里有问题了,可能是if 与else的匹配问题,小弟初次自学,希望各位大侠高手赐教了,
#include
#include
main()
{
printf("请输入三个系数:\n");
float a,b,c,q,x1,x2,x;
scanf("%f%f%f",&a,&b,&c);
q=b*b-4*a*c;
if (q>0)
x1=(-b+sqrt(q))/(2*a);
x2=(-b-sqrt(q))/(2*a);
printf("方程有两个解,x1=%f,x2=%f \n",x1,x2);
if (q=0)
x=-b/(2*a);
printf("方程只有一个解,x%f,\n",x);
if (q
忽略a=0 ,b=0的情况
代码奉上:
楼主好像错在if(q = 0) 这句上,应该为q==0,q=0话就是赋值了,除非你赋的值为0,否则一直问真,注意点就好了.还有写if( ){ .} else if( ){ . } else { }这些语句的加括号啊~~~~~~~··
#include
#include
int main()
{
printf("请输入三个系数:\n");
float a,b,c,q,x1,x2,x;
scanf("%f%f%f",&a,&b,&c);
q=b*b-4*a*c;
if (q > 0)
{
x1=(-b+sqrt(q))/(2*a);
x2=(-b-sqrt(q))/(2*a);
printf("方程有两个解,x1 = %f,x2 = %f \n",x1,x2);
}
else if (q == 0)
{
x=-b/(2*a);
printf("方程只有一个解,x = %f,\n",x);
}
else
printf("方程无解!\n");
return 0;
}