求函数 ax^2+bx+c=0的解 下面是我自己编的 哪里错了?求指教
# include <stdio.h># include <math.h>
void main()
{
float a,b,c,X,X1,X2,disc;
printf("please input 3 numbers\n");
scanf("%f %f %f\n",&a,&b,&c);
if(a==0)
{if(b==0)
{
if(c==0)
printf("方程有无穷多个解\n");
else
printf("方程无解 \n");
}
else
printf("方程的解为x=%f\n",-c/b);
}
else
{ if(b*b>=4*a*c)
{
if(b*b==4*a*c)
printf("方程的解为x1=x2=%f\n",-b/(2*a));
else
disc=b*b-4*a*c;
printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
else
printf("方程无解\n");
}
} 改那个什么设置了再发代码多好啊,这样看的晕 本帖最后由 风扫地 于 2011-3-17 19:20 编辑
if(b*b==4*a*c)
printf("方程的解为x1=x2=%f\n",-b/(2*a));
else
disc=b*b-4*a*c;
printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
else
printf("方程无解\n");
}
}
这里你忽略了一个问题。。。if(else)判断后,后面的语句只要不是括号括起来的只能执行一条语句..
所以
else
disc=b*b-4*a*c;
printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
else
×××××××××××××××××××××××××××××××××××××××××××××××××××
disc=b*b-4*a*c;
printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
××××××××××××××××××××××××××××××××××××××××××××××××××
这里要括号括起来。。。
这就是你为什么当b^2=4ac的时候会有两个输出的原因。。
建议不要在scanf函数的格式部分不要加一些无关代码。。。、、比如说\n
OK!。。我测试了。修改了以后没有问题了。。 # include <iostream>
using namespace std;
# include <math.h>
void main()
{
float a,b,c,X,X1,X2,disc;
cout<<"lease input 3 numbers:\n";
cin>>a>>b>>c;
if(a==0)
{
if(b==0)
{
if(c==0)
cout<<"方程有无穷多个解\n";
else
cout<<"方程无解 \n";
}
else
cout<<"方程的解为x=%f\n"<<-c/b;
}
else
{
if(b*b>=4*a*c)
{
if(b*b==4*a*c)
cout<<"方程的解为x1=x2="<<-b/(2*a);
else
{
disc=b*b-4*a*c;
cout<<"方程的解为x1, x2="<<(-b+sqrt(disc))/(2*a)<<" "<<(-b-sqrt(disc))/(2*a);
}
}
else
cout<<"方程无解\n";
}
}
用c语言输入的时候 好像字符接收不到!还是用c++这个熟悉的语言! # include <stdio.h>
# include <math.h>
void main()
{
float a,b,c,X,X1,X2,disc;
printf("please input 3 numbers\n");
scanf("%f %f %f",&a,&b,&c);
if(a==0)
{
if(b==0)
{
if(c==0)
printf("方程有无穷多个解\n");
else
printf("方程无解 \n");
}
else
printf("方程的解为x=%f\n",-c/b);
}
else
{
if(b*b>=4*a*c)
{
if(b*b==4*a*c)
printf("方程的解为x1=x2=%f\n",-b/(2*a));
else
{
disc=b*b-4*a*c;
printf("方程的解为x1=%f x2=%f\n",(-b+sqrt(disc))/(2*a),(-b-sqrt(disc))/(2*a));
}
}
else
printf("方程无解\n");
}
}
页:
[1]