标题:[求助]关于函数求根的问题
取消只看楼主
tomddr
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-6
 问题点数:0 回复次数:1 
[求助]关于函数求根的问题
题目如下:
求方程ax+bx+c=0的根,用3个函数分别求当b-4ac大于0、等于0和小于0是的根,并输出结果。从主函数输入a、b、c的值。

以下是我的程序:

#include<math.h>
float disc,x1,x2,p,q;
float rootzero(float a,float b) /*定义一个函数,用来求disc=0时方程的根*/
{
x1=x2=-b/(2*a);
}
float rootlarge(float a,float b) /*定义一个函数,用来求disc>0时方程的根*/
{
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
float rootsmall(float a,float b) /*定义一个函数,用来求disc<0时方程的根*/
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
}
main()
{
float a,b,c;
scanf("%f%f%f",&a,&b,&c);
disc=b*b+4*a*c;
printf("root:\n"); /*到这里都可以输出*/
if(disc<0)
{rootsmall(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}
else if(disc>0)
{rootlarge(a,b);
printf("x1=%5.2f+%5.2fi,x2=%5.2f-%5.2fi\n",p,q,p,q);
}
else rootzero(a,b);
printf("x1=%5.2f,x2=%5.2f\n",x1,x2);
}

我的程序运行后,输出到"root:",然后就显示"sqrt:DOMAIN error",然后换一行才显示x1,x2;
而却结果也不正确,我想了一下午也不明白到底那里错了.
各位朋友帮我看看程序那里出错了!先谢谢了!
搜索更多相关主题的帖子: float 函数 disc 方程 定义 
2006-03-06 20:29
tomddr
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-3-6
得分:0 
谢谢各位的帮助.
二楼的朋友,我的被调函数是没返回值,但x1,x2,p,q是全局变量,可供主函数使用呀!不过其他的地方的确考虑不够,正向4,5楼所说的,恩,想一下再说!
2006-03-07 12:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-48767-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.828588 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved