C语言计算一元二次方程结果一直为-inf,不知道是哪里出错了,求大神解答

#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<math.h>intmain(void){doublea,... #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>#include<math.h>int main(void) { double a, b, c;//系数 double x1, x2;//结果 double d ;//判定式 printf("请输入一元二次方程的三个系数(用空格隔开)>"); scanf_s("%lf %lf %lf", &a, &b, &c); d = b * b - 4 * a*c; if (a = 0) { printf("不是一元二次方程\n");//a等于0时为一元一次方程 }else if (d < 0) {//判定式等于0时为虚数解 printf("虚数解\n"); }else if (d == 0) {//判定式等于0时为重解 x1 = -b / (2 * a); printf("重解 x=%lf\n", x1); }else{ x1 = (-b + sqrt(d)) / (2 * a); x2 = (-b - sqrt(d)) / (2 * a); printf("x1=%f,x2=%f\n", x1, x2); } return 0; }
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main(void) {
double a, b, c;//系数
double x1, x2;//结果
double d ;//判定式

printf("请输入一元二次方程的三个系数(用空格隔开)>");
scanf_s("%lf %lf %lf", &a, &b, &c);
d = b * b - 4 * a*c;

if (a = 0) {
printf("不是一元二次方程\n");//a等于0时为一元一次方程
}else if (d < 0) {//判定式等于0时为虚数解
printf("虚数解\n");
}else if (d == 0) {//判定式等于0时为重解
x1 = -b / (2 * a);
printf("重解 x=%lf\n", x1);
}else{

x1 = (-b + sqrt(d)) / (2 * a);
x2 = (-b - sqrt(d)) / (2 * a);
printf("x1=%f,x2=%f\n", x1, x2);
}
return 0;

}
展开
 我来答
wjcmqyd
2018-04-29 · TA获得超过5629个赞
知道大有可为答主
回答量:3236
采纳率:79%
帮助的人:828万
展开全部

如下程序仅供参考:

#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c,x1,x2,temp;
printf("  利用公式法求一元二次方程的解。\n\n");
printf("  请输入方程系数a、b、c的值(各数之间空格隔开):");
while(scanf("%lf %lf %lf",&a,&b,&c) == 3)
{
while(getchar() != '\n')
continue;
if(!a)
{
printf("  a = 0 不是一元二次方程,请重新输入:");
continue;
}
if(b*b-4*a*c<0)
{
printf("  b^2 - 4ac < 0 这个一元二次方程无实数解,请重新输入:");
continue;
}
x1=(-b+sqrt(b*b-4*a*c))/(2*a);
x2=(-b-sqrt(b*b-4*a*c))/(2*a);
if(x1>=x2)
{
temp=x1;
x1=x2;
x2=temp;
}
printf("  x1 = %.2f    x2 = %.2f\n\n",x1,x2);
printf("  请输入方程系数a、b、c的值(各数之间用空格隔开):");
}
return 0;
}

itunes0004
2018-04-29 · TA获得超过4045个赞
知道大有可为答主
回答量:2685
采纳率:69%
帮助的人:519万
展开全部
#define _CRT_SECURE_NO_WARNINGS
#include <cstdio> 
#include <cmath>
int main(void) {
  double a, b, c; //系数
  double x1, x2; //结果
  double d; //判定式
  printf("请输入一元二次方程的三个系数(用空格隔开)>");
  scanf("%lf %lf %lf", &a, &b, &c);
  d = b * b - 4 * a * c;
  if (0==a) { // 这里错了,你写成 "a=0"了,建议以后 写 "0 == a"
    printf("不是一元二次方程\n"); //a等于0时为一元一次方程
  } else if (d < 0) {
    //判定式等于0时为虚数解
    printf("虚数解\n");
  } else if (d == 0) { //判定式等于0时为重解
    x1 = -b / (2 * a);
    printf("重解 x=%lf\n", x1);
  } else {
    x1 = (-b + sqrt(d)) / (2 * a);
    x2 = (-b - sqrt(d)) / (2 * a);
    printf("x1=%f,x2=%f\n", x1, x2);
  }
  return 0;
}
追问
好的,谢谢!!找了半天没发现这个错误!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-04-29
展开全部
第14行应该是a==0
第31的%f改为%lf
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式