为了账号安全,请及时绑定邮箱和手机立即绑定

这个解方程程序哪里出错了,求指教

这个解方程程序哪里出错了,求指教

C
莎莎Shasha 2017-10-31 09:44:52
#include<stdio.h> #include<math.h> int main() { int a,b,c,x; double disc,x1,x2; scanf("%d %d %d",&a,&b,&c); disc=b*b-4*a*c; if (fabs(disc)<1e-6) printf("\"NO\""); else { if (fabs(disc)>1e-6) { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); if (x1==(int)x1&&x2==(int)x2) printf("%d %d",x1,x2); else printf("\"NO\""); } else { x=(-b)/2*a; if (x=(int)x) printf("%d",x); else printf("NO"); } } return 0; }
查看完整描述

1 回答

已采纳
?
qq_莫非

TA贡献257条经验 获得超92个赞

#include <stdio.h>  
#include <math.h> 
void main () 
{ 
 double sqrt(double x); 
 int a,b,c; 
 double x1,x2,x,e,d,g,f; 
scanf("%d %d %d",&a,&b,&c); 
  d=b*b-4*a*c;  
if (a==0) 
{      if (b!=0) 
{x=-(double)c/(double)b; 
if (x==0) 
{x=-x; 
printf("x=%.6lf\n",x);} 
else 
printf("x=%.6lf\n",x); 
} 
    else 
     printf("Input error!\n");} 
else if (d<0) 
{d=-d; 
e=sqrt(d); 
g=-(double)b/(2*(double)a); 
f=e/(2*a); 
    if (g!=0) 
     printf("x1=%.6lf+%.6lfi\nx2=%.6lf-%.6lfi\n",g,f,g,f); 
    else 
    printf("x1=%.6lfi\nx2=-%.6lfi\n",f,f);} 
else if (d==0) 
{     x1=x2=-b/(2*a); 
      printf("x1=x2=%.6lf\n",x1);} 
      else 
  {    e=sqrt(d); 
       x1=(-b+e)/(2*a); 
          x2=(-b-e)/(2*a); 
          printf("x1=%.6lf\nx2=%.6lf\n",x1,x2);} 
}


查看完整回答
反对 回复 2017-11-01
  • 1 回答
  • 0 关注
  • 1206 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信