标题:写的一元二次方程代码编译没有错,运行出错了找不到。求解惑
只看楼主
朔源
Rank: 1
等 级:新手上路
帖 子:105
专家分:4
注 册:2015-9-22
结帖率:90%
 问题点数:0 回复次数:1 
写的一元二次方程代码编译没有错,运行出错了找不到。求解惑
#include<stdio.h>
#include<conio.h>
#include<math.h>
double x1,x2,disc;
void disc_1(double a,double b,double c)
{
    x1=(-b+sqrt(disc))/(2*a);
    x2=(-b-sqrt(disc))/(2*a);
   
}
double disc_2(double a,double b,double c)
{
    x1=x2=(-b+sqrt(disc))/(2*a);
    return(x1);
   
}
double disc_3(double a,double b,double c)// disc<0  不是没有解吗?这个要怎么写呢?没东西可以写啊?
{
    return(0);
}
int main(void)
{
    double a,b,c,disc;
    printf("please input a,b,c:");
    scanf("%d,%d,%d",&a,&b,&c);
    disc=b*b-4*a*c;
    if(disc==0)
    {
        disc_2(a,b,c);
        printf("the equation have only one root x1=x2=%f",x1);
    }
    else if(disc>0)
    {
        disc_1(a,b,c);
        printf("the equation have two diffrent root x1=%f x2=%f",x1,x2);

    }
    else
    {
       disc_3(a,b,c);
       printf("the equation have no root ");
    }
    getch();
    return (0);
}

编译没有错误,但运行时出错,每次都是 disc_3 这个解。the equation have no root 求个大神看看哪里错了。
还有函数什么时候需要返回值,什么时候不需要?求解惑。。。。。。。。。。。。。。。
搜索更多相关主题的帖子: include please double return 
2015-10-23 18:17
蓝色风暴cl
Rank: 8Rank: 8
来 自:新疆
等 级:蝙蝠侠
威 望:3
帖 子:163
专家分:704
注 册:2015-9-6
得分:0 
是不是这要写成disc-0>1e-6这种样式?判断大于零,小于零,else等于零?

欢迎大家加好友哦,多找我聊聊吧!
2015-10-23 18:33



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




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

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