| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 409 人关注过本帖
标题:哪位高手帮我看看,不胜感激!
只看楼主 加入收藏
linker007
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-8-3
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
哪位高手帮我看看,不胜感激!
我想编一个一元二次函数求结果的程序(C语言)可是总是输不出正确结果,相当郁闷啊!!请高手们看一下,谢谢!
#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,d,i,f,g,h;
    printf("输入A B C\n");
    scanf("%1f %1f %1f",&a,&b,&c);
    d=b*b-4*a*c;
    i=-b/2/a;
    if(abs(d)>=1e-6)
    {
        printf("有实数根:\n");
        f=sqrt(d)/2/a;
        g=i+f;
        h=i-f;
        printf("x1=%8.4f\nx2=%8.4f",g,h);
    }
    else
    {
        printf("无实数根:\n");
        f=abs(sqrt(-d)/2/a);
        printf("x1=%8.4f+%8.4fi\nx2=%8.4f-%8.4fi\n",i,f,i,f);
    }
    printf("\n");
    return 0;
}
搜索更多相关主题的帖子: include 不胜感激 double C语言 
2012-08-03 18:53
血祭幻岚
Rank: 2
等 级:论坛游民
帖 子:29
专家分:72
注 册:2012-3-21
收藏
得分:0 
%f 表示单精度的数 如果用%f  就把那些变量设为 float型
2012-08-03 19:20
whibla
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2012-8-1
收藏
得分:0 
为什么要用abs啊   if(abs(d)>=1e-6)这样不是把b*b-4ac<0的情况也包含了吗?
2012-08-03 19:23
血祭幻岚
Rank: 2
等 级:论坛游民
帖 子:29
专家分:72
注 册:2012-3-21
收藏
得分:0 
同那个3楼所说,直接d>0不就行了,而且你也没判断a是否等于零
2012-08-03 19:35
weipeng1217
Rank: 5Rank: 5
等 级:职业侠客
帖 子:175
专家分:386
注 册:2012-1-12
收藏
得分:10 
#include<stdio.h>
#include<math.h>
int main()
{
    double a,b,c,d,i,f,g,h;
    printf("输入A B C\n");
    scanf("%1f %1f %1f",&a,&b,&c);  
    d=b*b-4*a*c;
    i=-b/2/a;     //这里貌似有问题,分母加格括号
    if(abs(d)>=1e-6)   //算法有问题
    {
        printf("有实数根:\n");
        f=sqrt(d)/2/a;    //这里也是,分母加格括号
        g=i+f;
        h=i-f;
        printf("x1=%8.4f\nx2=%8.4f",g,h);     //double的输出控制是  %lf  前面对了,后面这又忘了?其实用float就可以了

    }
    else
    {
        printf("无实数根:\n");
        f=abs(sqrt(-d)/2/a);
        printf("x1=%8.4f+%8.4fi\nx2=%8.4f-%8.4fi\n",i,f,i,f);   //这里是干嘛的?d<0 不就没有实根了么
    }
    printf("\n");
    return 0;
}


暂时发现了那点不足,我调试了断代码供参考:
程序代码:
#include<stdio.h>
#include<math.h>
int main()
{
   double a,b,c,d,e,f,x1,x2;
    printf("输入A B C\n");
    scanf("%lf %lf %lf",&a,&b,&c);
    d=b*b-4*a*c;
    if(d>=0)
    {
        printf("有实数根:\n");
        e=sqrt(d);
        x1=((-b)+e)/(2*a);
        x2=((-b)-e)/(2*a);


        printf("x1=%8.4lf\nx2=%8.4lf",x1,x2);
    }
    else
    {
        printf("无实数根:\n");
    }
    printf("\n");
    system("pause");
    return 0;
} 


C坛友交流群 群号:161091913 ,欢迎经常在线的朋友加入,一起学习,一起进步。。
2012-08-03 20:55
快速回复:哪位高手帮我看看,不胜感激!
数据加载中...
 
   



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

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