c语言,求解一元二次方程ax^2+bx+c=0的根程序如图,问若求解分三个函数,其形参如何设置

如题所述

#include <stdio.h>
#include <math.h>
int main()
{
 bool equalroot(float d,float a,float b);
 bool tworealroot(float d,float a,float b);
 bool complexroot(float d,float a,float b);
 float a,b,c,d;
 scanf("%f%f%f",&a,&b,&c);
 printf("the equation ");
 if(fabs(a)<1e-6)
 {
  printf("is not quadratic\n");
 }
 else 
 {
  d=b*b-4*a*c;
  if(equalroot(d,a,b)) return 0;
  if(tworealroot(d,a,b)) return 0;
  if(complexroot(d,a,b)) return 0;
 }
 return 0;
}
bool equalroot(float d,float a,float b)    //计算等根情况
{
 if(fabs(d)<=1e-6)
 {
  printf("has two equal roots:\n");
  printf("x1=x2=%8.4lf\n",-b/(2*a));
  return true;
 }
 return false;
}
bool tworealroot(float d,float a,float b)  //计算不同实根情况
{
 float x1,x2;
 if(d>=0)
 {
  x1=((-b+sqrt(d))/(2*a));
  x2=((-b-sqrt(d))/(2*a));
  printf("has two real roots:\n");
  printf("x1=%8.4lf, x2=%8.4lf\n",x1,x2);
  return true;
 }
 return false;
}
bool complexroot(float d,float a,float b)  //计算复根情况
{
 float jp,ip;
 if(d<0)
 {
  jp=-b/(2*a);
  ip=sqrt(-d)/(2*a);
  printf("has two complex root:\n");
  printf("x1=%8.4lf +%8.4lfi\n",jp,ip);
  printf("x1=%8.4lf -%8.4lfi\n",jp,ip);
  return true;
 }
 return false;
}

温馨提示:内容为网友见解,仅供参考
无其他回答

c语言,求解一元二次方程ax^2+bx+c=0的根程序如图,问若求解分三个函数...
两个函数的形参和root函数的形参模式是一样的,只有b^2-4ac < 0 的时候 不用设置形参,因为这种情况下,无解,所以根本不需要传递参数。

C语言编写一个程序求解一元二次方程ax2+bx+c=0的根。要求系数a,b,c从...
jud; printf ("输入二次方程的三个系数(第一个不能为0):"); scanf ("%f %f %f", &a, &b, &c); jud = b * b - 4 * a * c; \/\/根的判别式 if (jud > 0) { printf ("该方程有两个不相等的实根:\\n"); printf ("x1...

求一元二次方程ax2+bx+c=0的根c语言
1、一元二次方程ax^2+bx+c=0的根的求解涉及到数学的二次方程解公式。当我们谈论一元二次方程的根时,我们实际上是在谈论这个方程的解,也就是能够使得方程成立的未知数的值。在C语言中,我们可以使用数学库来帮助我们进行计算。2、首先,我们需要明白一元二次方程的解的公式。这个公式是:x=(-...

c#求一元二次方程ax^2+bx+c=0的根,a(a≠0)、b、c的值由键盘输入
= null) Console.WriteLine($"{result.Value.x1} {result.Value.x2}"); }}其实我不懂为什么不能用一个三元表达式解决,即使改成true?null:null也会报error。static (double x1, double x2)? Roots(double a, double b, double c)=> b * b - 4 * a * c is double delta && ...

C语言,求一元二次方程ax2+bx+c=0的根。
printf("得他大于零,两个解:\\tx1=%lf\\tx2=%lf\\n",x1,x2);} } void main(){ int i,a,b,c;printf("---\\n1.一元一次方程求解\\n2.一元二次方程求解\\n3.一元三次方程求解\\n0.退出\\n---\\n");printf("请输入指令序号(每次输入完按...

解一元二次方程ax2+bx+c=0的解。 c语言编程求代码
如图所示,望采纳。。。

用c语言编写ax2+bx+c=0的根?
以下是用 C 语言编写的求解一元二次方程 ax^2 + bx + c = 0 的根的程序:include <stdio.h> include <math.h> int main(){ double a, b, c; \/\/ 一元二次方程的系数 double delta; \/\/ 一元二次方程的判别式 double x1, x2; \/\/ 一元二次方程的根 printf("请输入一元二...

c语言一元二次方程求根程序
c语言一元二次方程求根程序算法的构思过程:一元二次方程的一般式:ax^2+bx+c=0。我们知道,一元二次方程有解(根)的充要条件是:b^2-4ac>=0。如果不满足此关系式,那么方程无解。接着当方程有解的时候又出现了两种情况。有两个重根(大小相等的根)或者两个大小不等的根,为了是程序更加...

C语言:求一元二次方程ax^2+bx+c=0的解,要求用函数调用来完成,
解一元二次方程,C语言函数实现,参考代码如下:include<stdio.h> include<math.h> int fun(double *x1, double *x2, double a, double b, double c){ double dt,absdt;if(fabs(a)<1e-14)\/\/解决浮点数比较误差的问题 return 0;\/\/a为0时 dt=b*b-4*a*c;absdt=fabs(dt);if(abs...

c语言编程 求一元二次方程的实数根。ax^2+bx+c=0,abc均由键盘读入。
} else { p[0]=0; p[1]=0; }}int main(){ float a, b, c,v; float x[2]={0};\/\/用保存结果 scanf("%f%f%f", &a, &b, &c); v = b*b - 4 * a*c; if (v >= 0)\/\/不管是实数解是否相等,直接输出 \/\/如果非要在意两个解相等...

相似回答