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

作者&投稿:尚刮 (若有异议请与网页底部的电邮联系)
c语言求一元二次方程方程代码哪里错了,老得不到正确答案~

要么把所有的%f换成%lf,要么把double换成float,两个是不同数据类型。
然后把语句:double delta = b*b - 4*a*c; 放到scanf语句后。这样就能顺利得出结果。
由于之前你的程序没有输入a,b,c的值,程序自动为delta赋值,所以,你在输入a,b,c是没有意义的。你可以输入前打印一下那个double delta 的值。

看了下你的程序,我说下存在的几个问题!
1.“if(judge=='Y')goto loop” :从程序的实用性的角度讲,假设这就是一款软件,客户在使用的时候,未必会输入大写的“Y”,他可能输入的是小写的“y”, 但你的程序却无法识别!
所以,最好改成“if(judge=='Y' || judge=='y') ,学以致用,初学的时候就要考虑这种!
2.“printf("是否继续?(Y/N)
");
scanf("%c",&judge);”
在你输入了参数 后,还得敲一次回车,就是说在你敲一次回车的时候,同时输入了一个换行符“
”, 它在ASCII 中是有ASCII值得,并且"
" 属于字符型!
换句话说:不论你输入Y还是输入N ,judge 始终等于 “
”,所以很显然,它不可能正常 运行 和判断!
解决方法:清除“

.printf("是否继续?(Y/N)
");
fflush(stdin);
scanf("%c",&judge);
3.
if(deita<0)
printf("该方程无解
");
deita<0,只是说没有实根,不能说人家无解啊!!! 人家还有虚跟啊! 呵呵……

4.附程序:(仅供参考)


#include
#include
#include
void main()
{
char ch;
double a,b,c,x1,x2,p,m ,n;
loop:printf("input a b c
");
scanf("%lf%lf%lf",&a,&b,&c);
if(a==0)
{

printf("you are wrong
");
exit(0);
}
p=b*b-4*a*c;
if(p<0)
{
m=-b/(2*a);
n=sqrt(4*a*c-b*b)/(2*a);
printf("x1=%.1lf+%.1lfi
",m,n);
printf("x2=%.1lf-%.1lfi
",m,n);
}
else
{
x1=(-b+sqrt(p))/2/a;
x2=(-b-sqrt(p))/2/a;
printf("x1=%.1lf
,x2=%.1lf
",x1,x2);
}
printf("Do you want to try again?(Y/N)
");
k:fflush(stdin);
ch=getchar();
if(ch=='y'||ch=='Y')
goto loop;
}

我的回答很清楚吧,(*^__^*) 嘻嘻……

如下程序仅供参考:

#include <stdio.h>
#include <math.h>
int main(void)
{
double a,b,c,x1,x2,temp;
printf("  利用公式法求一元二次方程的解。

");
printf("  请输入方程系数a、b、c的值(各数之间空格隔开):");
while(scanf("%lf %lf %lf",&a,&b,&c) == 3)
{
while(getchar() != '
')
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

",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("不是一元二次方程
"); //a等于0时为一元一次方程
  } else if (d < 0) {
    //判定式等于0时为虚数解
    printf("虚数解
");
  } else if (d == 0) { //判定式等于0时为重解
    x1 = -b / (2 * a);
    printf("重解 x=%lf
", x1);
  } else {
    x1 = (-b + sqrt(d)) / (2 * a);
    x2 = (-b - sqrt(d)) / (2 * a);
    printf("x1=%f,x2=%f
", x1, x2);
  }
  return 0;
}


第14行应该是a==0
第31的%f改为%lf


一元二次方的计算过程,带公式谢谢!
移项,3Q²-40Q-75=0,可变为(3Q+5)(Q-15)=0,可得Q1=-5/3,Q2=15。或者移项后用求根公式直接计算,计算b²-4ac.然后求根公式一代就可以得到答案了。

用JAVA编程求一元二次方程的根,一元二次方程的系数从键盘输入
public class Demo { public static void main(String [] args){ Scanner sc = new Scanner(System.in);System.out.println("输入2次方的系数");int a = sc.nextInt();System.out.println("输入1次方的系数");int b = sc.nextInt();System.out.println("输入0次方的系数");int c = sc...

用C语言编写程序,输入一元二次方程的系数a,b,c,计算方程的根(假设是两...
if(a==0) \/\/一元二次方程二次项系数不为0 { printf("data error\\n");} else { disc=b*b-4*a*c;if(disc>0)root2(a,b,disc);else if(disc==0)root1(a,b);else root0();} return 0;} void root2(double a,double b,double disc){ double x1,x2;x1=(-b+sqrt(disc...

数学一元二次方程公式法
一元二次方程指的是,经过化简后,只含有一个未知数,并且未知数的最高次数为2的整式方程。像等号两边都是整式,只含有一个未知数(一元),并且未知数的最高次数是2(二次)的方程叫做一元二次方。要判断一个方程是否为一元二次方程,需要先化简方程看是否满足条件。方程依靠等式各部分的关系,和加...

一元二次方程在C语言中怎么去理解?
理解为y=x的二次方,即y=x*x,将两个x相乘。

编写程序,(C语言)求一元二次方程ax的2次方+bx+c=0的根
void main(){ double a,b,c,delta,root1,root2;printf(\\"Please input a:\\");scanf(\\"%lf\\",&a);printf(\\"Please input b:\\");scanf(\\"%lf\\",&b);printf(\\"Please input c:\\");scanf(\\"%lf\\",&c);delta=b*b-4*a*c;if(delta<-ESSP)printf(\\"This equation has no ...

一元二次方公式的求根公式是什么
ax^2+bx+c=0 先求△=b^2-4ac 如果△<0,无实数根 如果△=0,两重复实数根 如果△>0,x1,x2=

求解一个一元二次方程的思路.如X^+2X-15=0 ^代表2次方.关键求怎么解...
解法一:∵X²+2X-15=0 ==> (X-3)(X+5)=0 ∴此方程的解是:X1=3,X2=-5 解法二:∵X²+2X-15=0 ==> X²+2X+1-16=0 ==> (X+1)²=16 ==> X=-1±4 ∴X1=-1+4=3,X2=-1-4=-5 ∴此方程的解是:X1=3,X2=-5 ...

五十道一元二次方程计算题不解
A、k≤- B、k≥- 且k≠0 C、k≥- D、k>- 且k≠0 5、关于x的一元二次方的两程个根为x1=1,x2=2,则这个方程是( )A、 x2+3x-2=0 B、x2-3x+2=0 C、x2-2x+3=0 D、x2+3x+2=0 6、已知关于x的方程x2-(2k-1)x+k2=0有两个不相等的实根,那么k...

一道关于一元二次方程计算,求过程和解释,对于各位来说是很容易的...
设每年平均增长百分数约是x.100×(1+x)²=121 x=0.1 或 x=-2.1(不合题意,舍去)第四年:121×1.1²=146.41(万台 )

景德镇市13517921619: C语言编程的一元二次方程运行一直得到无解 -
年苏秋梨: if (delta > 0),你的>大于号错了.还有你是不是少了一个}号最后.#include #include int main() { int a = 1; int b = 2; int c = 3; double delta; double x1; double x2; delta = b*b - 4*a*c; if (delta > 0) { x1 = (-b + sqrt(delta)) / 2*a; x2 = (-b - sqrt(delta)) / 2*a; ...

景德镇市13517921619: C语言求一元二次方程.求问一下哪位大神知道这个结果为什么会这样吗? -
年苏秋梨: 这是因为你输入的一元二次方程的系数正好使他的判别式小于零,这个时候一元二次方程就没有实数根.你若想最后的输出有两个不同的实数根,你只要把最后一个系数的符号换一下,改成-67就可以了.(前面两个系数不变)

景德镇市13517921619: C语言编程一元二次方程,一直得到无解的结果 -
年苏秋梨: 你好,可以把所有%if改为%lf

景德镇市13517921619: c语言编写一元二次方程的问题,请问这么写有什么问题,为什么一直输出无解? -
年苏秋梨: delta = b*b-4*a*c; 放到 scanf下面去,还没输入值呢,另外 所有计算式中的常数整数,最好加个.0(比如 2变成 2.0) ,不然可能会结果不正确

景德镇市13517921619: 用C语言求解一元二次方程的解,为什么编译什么的都过了,就是运行的结果不对啊,求帮忙看下哪里错了? -
年苏秋梨: delta=b*b-4*a*c; //delta存放b*b-4ac的值 这句要放在这两句后面,不然delta恒为0.scanf("a=%fb=%fc=%f\n",&a,&b,&c); getchar();

景德镇市13517921619: C语言 输入a,b,c求一元二次方程解,编译没错,但无论输入什么值运行的结果全是无解,求解 -
年苏秋梨: # include int main ( ) { float a, b, c; double delta, x1, x2; scanf ("%f,%f,%f",&a, &b, &c);//a,b,c定义的是int对应的输入格式应该是%d,如果要用实数,则a,b,c应该定义为%f,且输入的时候要用逗号隔开 delta = b*b - 4*a*c; if (delta > 0) { x1 = (-b + ...

景德镇市13517921619: c语言一元二次方程求根 ,当输入的系数为负数时,结果出错是怎么回事? -
年苏秋梨: 试了一下,b 为0 或 为 负 可以 得结果,所以就不细查程序了.例子:a,b,c:1,0,1 The equation has complex roots:x1= 0.0000+ 1.0000i,x2= 0.0000- 1.0000i a,b,c:1,-1,0 The equation has two roots:x1= 1.0000,x2= 0.0000 a,b,c:1,-1,-1 The equation has two roots:x1= 1.6180,x2= -0.6180

景德镇市13517921619: 用C语言编写一程序求解一元二次方程的根. -
年苏秋梨: #include<stdio.h> #include<math.h> void m(float a,float b,float c) {double x1,x2;x1=(-b+sqrt(b*b-4*a*c))/(2*a);x2=(-b-sqrt(b*b-4*a*c))/(2*a);printf("方程的根是%.2lf和%.2lf",x1,x2); } void n(float a,float b,float c) {double x;x=(-b)/(2*a);printf...

景德镇市13517921619: 一元方程求解C语言不知道哪里错了,求指教!结果总是输出“方程无解” -
年苏秋梨: 楼主的程序没有大的问题,就是输入时scanf("%1f,%1f,%1f",&a,&b,&c);改为scanf("%lf,%lf,%lf",&a,&b,&c);你指定了一位,输入超过一位就不能读入了,程序就会出错.还有建议scanf语句内部不要使用逗号等其他符号,以免忘记输入导...

景德镇市13517921619: 用C语言求一元二次方程组遇到如下问题. -
年苏秋梨: 判断条件写的不对 比如 if(a=0,b=0,c=0) 应该是 if(a==0&&b==0&&c==0) 其他类似if(a=0,b=0) =》 if(a==0&&b==0)if(d=0) =》 if(d==0)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网