作业帮 > 综合 > 作业

请看一下我这个求解一元二次方程的程序有什么错?

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 13:46:12
请看一下我这个求解一元二次方程的程序有什么错?
#include
#include
main()
{int a,b,c;float n1,m,n2,d,x;
scanf("%d,%d,%d\n",&a,&b,&c);
if(a==0)
{
if(b==0)
printf("Input error!\n");
else
{x=-c/b;
printf("x=%f\n",&x);
}
}
else
{d=b*b-4*a*c;
m=2*a;
n1=-b/m;
if(d>=0)
{
n2=sqrt(d)/m;
if(d==0) printf("x1=x2=%f\n",&n1);
else printf("x1=%f,x2=%f\n",n1+n2,n1-n2);
}
else
{
n2=sqrt(-d)/m;
printf("x1=%f+%fi\n",n1,n2);
printf("x2=%f-%fi\n",n1,n2);
}
}
}
已经修改好了:
#include<stdio.h>
#include<math.h>
main()
{int a,b,c;float n1,m,n2,d,x;
 scanf("%d,%d,%d",&a,&b,&c);        /* 这里去掉了\n,且在输入时要用逗号分隔 */
 if(a==0)
 {
   if(b==0)
   printf("Input error!\n");
   else

   {x=-c/b;
    printf("x=%f\n",x);               /* 这里改了 */
   }
 }
 else
  {d=b*b-4*a*c;
   m=2*a;
   n1=-b/m;
   if(d>=0)
   {
    n2=sqrt(d)/m;
     if(d==0) printf("x1=x2=%f\n",n1);                /* 这里改了 */
     else printf("x1=%f,x2=%f\n",n1+n2,n1-n2);
   }
   else
   {
    n2=sqrt(-d)/m;
   printf("x1=%f+%fi\n",n1,n2);
   printf("x2=%f-%fi\n",n1,n2);
   }
  }
}\x1a