求方程 a*x^2+b*x+c=0的根,用3个函数分别求当b^2-4*a*c大于0、等于0、小于0时的根并输出结果.从主函数输不知道哪里错了,对于返回值那一点不是很清楚,#include#includemain(){double x(double x,double y,double
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 19:59:33
求方程 a*x^2+b*x+c=0的根,用3个函数分别求当b^2-4*a*c大于0、等于0、小于0时的根并输出结果.从主函数输不知道哪里错了,对于返回值那一点不是很清楚,#include#includemain(){double x(double x,double y,double
求方程 a*x^2+b*x+c=0的根,用3个函数分别求当b^2-4*a*c大于0、等于0、小于0时的根并输出结果.从主函数输
不知道哪里错了,对于返回值那一点不是很清楚,
#include
#include
main()
{
double x(double x,double y,double z);
double y(double x,double y,double z);
double z(double x,double y,double z);
double a,b,c,n;
double x1,x2;
printf("a=");scanf("%f",&a);
printf("b=");scanf("%f",&b);
printf("c=");scanf("%f",&c);
n=pow(b,2)-4*a*c;
if(n>0)
{
x1,x2=x(a,b,c);
printf("x1=%lf\tx2=%lf",x1,x2);
}
else if(n==0)
{
x1=x2=y(a,b,c);
printf("x1=x2=%lf",x1);
}
else
{
x1,x2=z(a,b,c);
printf("x1=%lf\tx2=%lf",x1,x2);
}
return 0;
}
double x(double x,double y,double z)
{
double x1,x2;
x1=(-y-sqrt(pow(y,2)-4*x*z))/(2*x);
x2=(-y+sqrt(pow(y,2)-4*x*z))/(2*x);
return(x1,x2);
}
double y(double x,double y,double z)
{
double x1,x2;
x1=x2=(-y-sqrt(pow(y,2)-4*x*z))/(2*x);
return(x1);
}
double z(double x,double y,double z)
{
double x1,x2;
x1=(-y-sqrt(pow(y,2)-4*x*z))/(2*x);
x2=(-y+sqrt(pow(y,2)-4*x*z))/(2*x);
return(x1,x2);
}
求方程 a*x^2+b*x+c=0的根,用3个函数分别求当b^2-4*a*c大于0、等于0、小于0时的根并输出结果.从主函数输不知道哪里错了,对于返回值那一点不是很清楚,#include#includemain(){double x(double x,double y,double
这种返回方式,我没有用过,但是先以你的double x这个函数做个比方
double x(double x,double y,double z)
{
double x1,x2;
x1=(-y-sqrt(pow(y,2)-4*x*z))/(2*x);
//x2=(-y+sqrt(pow(y,2)-4*x*z))/(2*x);
//return(x1,x2);
return x1;
}
如上,你可以注释其中两行代码然后return x1,查看结果是否正确,如果这样做结果正确说明不可以那样返回.你可以用两个函数分开输出你的两个x的值:
如下:
double x1(double x,double y,double z)
{
double x1,x2;
x1=(-y-sqrt(pow(y,2)-4*x*z))/(2*x);
return x1;
}
double x2(double x,double y,double z)
{
double x1,x2;
x2=(-y+sqrt(pow(y,2)-4*x*z))/(2*x);
return x2;
}