C语言计算一元二次方程结果一直为-inf,不知道是哪里出错了,求大神解答
#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;
} 展开
如下程序仅供参考:
#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;
}
#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
第31的%f改为%lf