帮忙运行改正下程序的错误啊谢谢

来源:百度知道 编辑:UC知道 时间:2024/05/04 19:15:21
求方程ax2+bx+c=0 的根,用3 个函数分别求当b2-4ac 大于0、等于0 和小于时的根并输出结果,从主函数输入系数a、b、c 的值。
我编的程序如下
#include<stdio.h>
#include "math.h"
double fin1(float a,float b,float c)
{double x1,x2,d;
d=b*b-4*a*c;
if(d>0) x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);
return x1,x2;}

double fin2(float a,float b,float c)
{double x1,x2,d; d=b*b-4*a*c;
if(d=0) x1=(-b)/(2*a);x2=(-b)/(2*a); }

double fin3(float a,float b,float c)
{double x1,x2,d; d=b*b-4*a*c;
if(d<0) printf("该方程无实根"); }

void main()
{ double a,b,c,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
fin1(a,b,c);
fin2(a,b,c);
fin3(a,b,c);
printf("%lf,%lf",x1,x2);
}

下面程序在SCO UNIX上调试通过,你的机器应该没有问题,通过这个程序,你应该明白函数只能返回一个数值。

#include <stdio.h>
#include <math.h>

int fin(double a,double b,double c,double *x1,double *x2)
{double d;
d=b*b-4*a*c;
if(d>0) {
*x1=(-1*b+sqrt(d))/(2*a);
*x2=(-1*b-sqrt(d))/(2*a);
return 2;
}
else if(d=0) {
*x1=(-1*b)/(2*a);
return 1;
}
else return 0;
}

void main()
{ double a,b,c,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
switch(fin(a,b,c,&x1,&x2)){
case 0: printf("方程无解\n"); break;
case 1: printf("x1=x2=%lf",x1); break;
case 2: printf("x1=%lf,x2=%lf",x1,x2); break;
}
}