| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1909 人关注过本帖
标题:[求助]求二次函数根的程序出错了,刚入门同学的求教。
只看楼主 加入收藏
灰熊和蜥蜴
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-25
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:6 
[求助]求二次函数根的程序出错了,刚入门同学的求教。
#include<stdio.h>   //请帮我看看,这程序哪里有问题。。才导致下面的运行结果。这是求ax^2+bx+c=0的根的程序

#include<math.h>
    void fun1(double a,double b,double c,double d)      //Δ=0的情况
    {
        double ans=-b/(2*a);
        printf("b^2-4*a*c==0,x1=x2=%lf.\n",ans);
        }
 void fun2(double a,double b,double c,double d)  //Δ>0的情况
 {
     double ans1,ans2;
     ans1=(-b-sqrt(d))/(2*a);
     ans2=(-b-sqrt(d))/(2*a);
     printf("b^2-4*a*c>0,x1=%lf,x2=%lf.\n",ans1,ans2);
 },
 void fun3(double a,double b,double c,double d)  //Δ<0的情况,输出复数解
 {
     double real,imar;
     real=-b/(2*a);
     imar=sqrt(-d)/(2*a);
     printf("b*b-4*a*c<0,x1=%lf+%lfi,x2=%lf-%lfi.\n",real,imar,real,imar);
 }
 int main()      //我感觉是不是主函数的问题
 {
     void fun1(double a,double b,double c,double d);
     void fun2(double a,double b,double c,double d);
     void fun3(double a,double b,double c,double d);
     double a,b,c,d;
     printf("please intput a,b,c.\n");
     while(scanf("%lf,%lf,%lf",&a,&b,&c)!=EOF)      
        {
         d=b*b-4*a*c;
         if(d==0)fun1(a,b,c,d);
         else if(d>0)fun2(a,b,c,d);
         else fun3(a,b,c,d);
         printf("please enter put a,b,,c.\n");
     }
}

图片附件: 游客没有浏览图片的权限,请 登录注册
           //无限循环,用的DEV编译器

[此贴子已经被作者于2016-5-25 16:24编辑过]

2016-05-25 16:21
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:10 
你确定你的程序能运行吗?
void fun2(double a,double b,double c,double d)  //Δ>0的情况
 {
     double ans1,ans2;
     ans1=(-b-sqrt(d))/(2*a);
     ans2=(-b-sqrt(d))/(2*a);
     printf("b^2-4*a*c>0,x1=%lf,x2=%lf.\n",ans1,ans2);
 },  //这里多个逗号什么鬼
2016-05-25 16:49
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
int main()  //这个括号右半边是中文输入法下的括号吧?
至于你说的无限循环的问题,应该while这句的问题,你查下scanf返回值的相关内容看看

[此贴子已经被作者于2016-5-25 16:57编辑过]

2016-05-25 16:53
灰熊和蜥蜴
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-25
收藏
得分:0 
回复 2楼 wanglianyi1
能运行啊,我都发图了。
2016-05-25 17:24
亲琪琪
Rank: 2
等 级:论坛游民
帖 子:55
专家分:38
注 册:2016-3-12
收藏
得分:10 
#include<stdio.h>  

#include<math.h>
    void fun1(double a,double b,double c,double d)   
    {
        double ans=-b/(2*a);
        printf("b^2-4*a*c==0,x1=x2=%lf.\n",ans);
        }
 void fun2(double a,double b,double c,double d)  
 {
     double ans1,ans2;
     ans1=(-b-sqrt(d))/(2*a);
     ans2=(-b+sqrt(d))/(2*a);
     printf("b^2-4*a*c>0,x1=%lf,x2=%lf.\n",ans1,ans2);
 }
void fun3(double a,double b,double c,double d)
 {
     double real,imar;
     real=-b/(2*a);
     imar=sqrt(-d)/(2*a);
     printf("b*b-4*a*c<0,x1=%lf+%lfi,x2=%lf-%lfi.\n",real,imar,real,imar);
 }


 int main()      
 {
     void fun1(double a,double b,double c,double d);
     void fun2(double a,double b,double c,double d);
  
     double a,b,c,d;
     printf("please intput a,b,c.\n");
     scanf("%lf,%lf,%lf",&a,&b,&c);     
        
         d=b*b-4*a*c;
         if(d==0)fun1(a,b,c,d);
         if(d>0)fun2(a,b,c,d);
         if(d<0)fun3(a,b,c,d);
        
         printf("please enter put a,b,c.\n");
         return 0;
     
}
我给你改了一下 现在应该好了
2016-05-25 17:36
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
回复 4楼 灰熊和蜥蜴
那就看下你的帖子上程序是不是你手写时候出错了,多个逗号,括号一半是中文输入法的。
2016-05-25 21:39
灰熊和蜥蜴
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-4-25
收藏
得分:0 
回复 5楼 亲琪琪
确实好了。但是我希望可以循环输入的。用while语句怎么不行?
2016-05-26 19:29
快速回复:[求助]求二次函数根的程序出错了,刚入门同学的求教。
数据加载中...
 
   



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

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