c++ 中出现这个是什么意思 要怎么改?switch expression not integral
#include"math.h"#include"stdio.h"main(){doublea,b,c,d,flag,x1,x2,p,q;printf("输入a,b,c的...
#include "math.h"
#include "stdio.h"
main()
{
double a,b,c,d,flag,x1,x2,p,q;
printf("输入a,b,c的值a=?b=?c=?");
d=b*b-4*a*c;
if(fabs(a)<=1.0e-6) flag=1;//表示a<0
else if(fabs(d)<=1.0e-6) flag=2;//表示b<0
else if(d>1.0e-6) flag=3;//表示d>0
else flag=4;
switch (flag)
{ case 1:printf("方程不是一个二次方程\n");break;
case 2:printf("方程有两个相等的实数根\n x1,x2=%f\n",-b/(2*a));break;
case 3:x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("方程有两个不相等的实根:\n x1=%f\n x2=%f\n",x1,x2);break;
case 4:p=-b/(2*a);
q=sqrt(-d)/(2*a);
printf("方程有两个共轭复根:\n");
printf("x1=%f+%fi\n",p,q);
printf("x2=%f-%fi\n",p,q);break;}
} 展开
#include "stdio.h"
main()
{
double a,b,c,d,flag,x1,x2,p,q;
printf("输入a,b,c的值a=?b=?c=?");
d=b*b-4*a*c;
if(fabs(a)<=1.0e-6) flag=1;//表示a<0
else if(fabs(d)<=1.0e-6) flag=2;//表示b<0
else if(d>1.0e-6) flag=3;//表示d>0
else flag=4;
switch (flag)
{ case 1:printf("方程不是一个二次方程\n");break;
case 2:printf("方程有两个相等的实数根\n x1,x2=%f\n",-b/(2*a));break;
case 3:x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("方程有两个不相等的实根:\n x1=%f\n x2=%f\n",x1,x2);break;
case 4:p=-b/(2*a);
q=sqrt(-d)/(2*a);
printf("方程有两个共轭复根:\n");
printf("x1=%f+%fi\n",p,q);
printf("x2=%f-%fi\n",p,q);break;}
} 展开
2个回答
展开全部
double a,b,c,d,flag,x1,x2,p,q; //你声明的flag是个double型 ,改为int型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |