永发信息网

解2次方程的程序,不知道哪里出问题了!

答案:2  悬赏:20  手机版
解决时间 2021-07-31 23:15
  • 提问者网友:皆是孤独
  • 2021-07-31 02:57

#include"math.h"
main()
{float a,b,c,dis,p,q,x1,x2;
printf("请输入方程系数a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if(a==0&&b==0&&c==0)

printf("方程解为任意值!\n");
if(a==0&&b!=0)x1=x2=-c/b,
printf("x1=x2=%-6.2f\n",x1);
if(a!=0)p=-b/(2*a),dis=b*b-4*a*c;
{if(dis<0)printf("方程无解!\n");
else q=sqrt(dis)/(2*a),x1=p+q,x2=p-q,

printf("x1=%-6.2fx2=%-6.2f",x1,x2);}

}

当a,b,c值符合第二个if时,输出的结果中多了一段,如下;

请输入方程系数a,b,c:0,2,1

x1=x2=-0.50

x1=1.#J x2=-1.#J

这是什么原因啊,谢谢解释一下!

最佳答案
  • 五星知识达人网友:骨子里都是戏
  • 2021-07-31 03:58
#include"math.h"
#include "stdio.h"
main()
{float a,b,c,dis,p,q,x1,x2;
printf("请输入方程系数a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
if(a==0&&b==0&&c==0)
printf("方程解为任意值!\n");
else if(a==0&&b!=0){
x1=x2=-c/b,
printf("x1=x2=%-6.2f\n",x1);
} else if(a!=0){
p=-b/(2*a),dis=b*b-4*a*c;
if(dis<0)printf("方程无解!\n");
else q=sqrt(dis)/(2*a),x1=p+q,x2=p-q,
printf("x1=%-6.2fx2=%-6.2f",x1,x2);
}
}

加个括号就行了,已测试通过
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-07-31 05:28
if后面的语句 用;号隔开 并用{}括起来
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯