编写的c++程序出现-1.#ifn00,大家帮忙看看这是为什么?

求方程ax2+bx+c=0的根,用三个函数分别求当b2-4ac大于0、等于0和小于0时的根,并输出结果。
#include<stdio.h>#include<math.h>int main(){void deltaZero(float a,float b,float c);void deltaLargerZero(float a,float b,float c);void deltaLessZero(float a,float b,float c);float a,b,c,disc;printf("Please enter a,b,c:\n");scanf("%f%f%f",&a,&b,&c);disc=b*b-4*a*c;if(a=0){printf("%f\n",-c/b);}else{if(disc==0){deltaZero(a,b,c);}elseif(disc>0){deltaLargerZero(a,b,c);}else{deltaLessZero(a,b,c);}}return 0;}void deltaZero(float a,float b,float c){float p;p=-b/(2*a);printf("X=%f\n",p);}void deltaLargerZero(float a,float b,float c){float disc,p,q;disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);printf("X1=%f,X2=%f\n",p+q,p-q);}void deltaLessZero(float a,float b,float c){float disc,p,q;disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a);printf("X1=%f+%fi,X2=%f-%fi\n",p+q,p+q,p-q,p-q);}
列如1 2 1,输出X=-1.#ifn00

出现父母为0的情况。

disc为float类型,不能用==进行判断,

需要

#define EPS 1e-9
if(fabs(disc) < EPS) // 通过这样判断

追问

您好,修改之后基本没问题了,但是根据实验要求输入1,2,2时应输出X1= -1+1i X2= -1-1i 但是我实验结果却这样

请问这是为什么?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-12
if(a=0)改为
if(a==0)追问

您好,修改之后基本没问题了,但是根据实验要求输入1,2,2时应输出X1= -1+1i X2= -1-1i 但是我实验结果却这样

请问这是为什么?

相似回答