| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 988 人关注过本帖, 1 人收藏
标题:求一元二次方程的值问题!
只看楼主 加入收藏
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
结帖率:89.66%
收藏(1)
已结贴  问题点数:40 回复次数:7 
求一元二次方程的值问题!
#include "Stdio.h"
#include "Conio.h"
#include <math.h>

int main(void)
{ float a,b,c,realpart,imagpart,x1,x2,D;
  scanf("%f,%f,%f",&a,&b,&c);
  if(fabs(a)<=1e-6)
    { if(fabs(b)<=1e-6)
      printf("it is a error\n");
      else
      printf("%f",-c/b);
     }
  else
  D=b*b-4*a*c;
  if(fabs(D)>1e-6)
     {  x1=(-b+sqrt(D))/(a*2);
        x2=(-b-sqrt(D))/(a*2);
        printf("%f,%f\n",x1,x2);
     }
  else
  if(fabs(D)<=1e-6)
  printf("%f\n",-b/(2*a));
  else
     { realpart=-b/(2*a);
       imagpart=sqrt(-D)/(2*a);
       printf("%f+%f\n",realpart,imagpart);
       printf("%f-%f\n",realpart,imagpart);
     }
  getch();
  return 0;
}
这是求方程ax2+bx+c=0的值问题,上面是我自己编的一段程序,原意是a=0时,判断b是否等于0,是的话就输出无解,不是的话就输出x的值!但我的程序不能得到这样的结果!大家看看!
搜索更多相关主题的帖子: 一元二次方程 
2010-04-22 23:40
Spygg
Rank: 5Rank: 5
等 级:职业侠客
帖 子:135
专家分:394
注 册:2007-5-20
收藏
得分:0 
方法貌似有点麻烦耶,那个stdio就不对,应该是小写吧,不是很懂1e-6是什么意思
2010-04-22 23:43
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
大家再帮我看看!

付出终将有回报!Ibelieve!
2010-04-23 20:54
aufish
Rank: 2
等 级:论坛游民
威 望:1
帖 子:59
专家分:94
注 册:2010-4-22
收藏
得分:0 
D=b*b-4*a*c;后面是不是少了一对{}。 但是程序还是错误的。我不很会你写的#include "Conio.h"
2010-04-23 21:34
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:30 
我改写了一下 #include "Stdio.h"
#include "Conio.h"
#include <math.h>

int main(void)
{
    float a,b,c,realpart,imagpart,x1,x2,D;
    printf("enter number\n");
    scanf("%f%f%f",&a,&b,&c);
   
    if(!fabs(a))
    {
        if(!fabs(b))
        printf("it is a error\n");
        else
        printf("%f",-c/b);
    }
    else
    {
         D=b*b-4*a*c;
        
        if(D>=0)
        {  
            x1=(-b+sqrt(D))/(a*2);
            x2=(-b-sqrt(D))/(a*2);
            printf("\tx1=%g\n\tx2=%g\n",x1,x2);
        }
        else
        {
            realpart=-b/(2*a);
            imagpart=sqrt(-D)/(2*a);
            printf("\tx1=%g+%g i\n",realpart,imagpart);
            printf("\tx2=%g-%g i\n",realpart,imagpart);
        }
    }
   
}
2010-04-24 00:06
ychf890225
Rank: 4
等 级:业余侠客
帖 子:85
专家分:221
注 册:2010-4-15
收藏
得分:0 
你那个最后面的那个if语句中就不能再去绝对值了 这个是最大的问题 ,另外你可以直接和0.0或者0比较
2010-04-24 00:09
自欺欺人
Rank: 5Rank: 5
等 级:职业侠客
帖 子:71
专家分:370
注 册:2010-4-14
收藏
得分:10 
这个是可以运行的
#include "stdio.h"
#include "math.h"
void main()
{
printf("求方程ax^2+bx+c=0的根:\n");
L: printf("请分别输入a,b,c的值。\n");
double a,b,c,x1,x2,x,y;
char z;
printf("a=");
fflush(stdin); //强制清空键盘缓冲区
scanf("%lf",&a);
printf("b=");
fflush(stdin); //强制清空键盘缓冲区
scanf("%lf",&b);
printf("c=");
fflush(stdin); //强制清空键盘缓冲区
scanf("%lf",&c);
printf("你所输入的方程为%lfx^2+%lfx+%lf=0。\n",a,b,c);
M: printf("是否正确?(是y\否n)\n");
fflush(stdin); //强制清空键盘缓冲区
scanf("%c",&z);
if (z=='n')
goto L;
else if (z=='y')
{
if ((b*b-4*a*c)>0)
x1=(-b+sqrt(b*b-4*a*c))/(2*a),
x2=(-b-sqrt(b*b-4*a*c))/(2*a),
printf("有两个不同的实根:\nx1=%lf\nx2=%lf\n",x1,x2),
printf("\n");
if ((b*b-4*a*c)==0)
x1=-b/(2*a),
printf("有两个相同的实根:\nx1=x2=%lf\n",x1),
printf("\n");
if ((b*b-4*a*c)<0)
x=-b/(2*a),
y=sqrt(4*a*c-b*b)/(2*a),
printf("有两表个不同的增根:\nx1=%lf+%lfi\nx2=%lf-%lfi\n",x,y,x,y),
printf("\n");
goto L ;
}
else printf("请正确输入,谢谢合作!\n");
goto M;
}
2010-04-24 11:14
ubuntulover
Rank: 4
等 级:业余侠客
帖 子:77
专家分:256
注 册:2010-4-9
收藏
得分:0 
lz的虽然思路很清楚,但是if else嵌套没搞清楚,致使程序的流程并不是按自己的思路走的。5楼的程序就很清晰
2010-04-24 12:23
快速回复:求一元二次方程的值问题!
数据加载中...
 
   



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

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