C语言。。用结构体做的一个算出二次方程式 x^2(x的平方)+ax+b=0的实数解的程序。

来源:百度知道 编辑:UC知道 时间:2024/06/04 14:00:31
求做一个算出二次方程式 x^2(x的平方)+ax+b=0的实数解的程序。。但需要满足下面的条件。
系数a,b的条件:设为实数型,从键盘输入。
函数标准为: struct answer solove(float, float)
第1引数: x的系数 第2引数: 定数项
还回来的值: answer型的结构体

answer型的结构体的要求: 解的个数(int型),实数解1(float型),实数解2(float型)。

画面显示的条件:利用从函数的还回来的值,让画面表示可以适当的变化。
那么,算平方根的时候,可以用函数「double sqrt(double)」。只是,程序的开头,要设为「#include math.h」 然

后,转换的时候,指定加上「-lm」。

这是我翻译后的。样子。。
我知道意思很难理解。。可还是希望高手们帮我看看。
如果你无言。。那我还是再次感谢您光临了这里。。敬礼!!

#include <math.h>
#include <stdio.h>

// C
struct EQN
{
int n_solve;//解的数目
float x1,x2;//解
float a,b,c;//系数
};

void eqn_solve(struct EQN * eqn)
{
float t=eqn->b*eqn->b-4*eqn->a*eqn->c;
if ( t > 0)
{
eqn->n_solve =2;
eqn->x1 = (-eqn->b+sqrt(t))/2*eqn->a;
eqn->x2 =(-eqn->b-sqrt(t))/2*eqn->a;
}
if ( t == 0 )
{
eqn->n_solve =1;
eqn->x1=eqn->x2=(-eqn->b+sqrt(t))/2*eqn->a;
}
if ( t < 0) eqn->n_solve =0;

}

void eqn_input (float a, float b,float c,struct EQN * eqn)
{
eqn ->a=a;
eqn ->b=b;
eqn ->c=c;
eqn_solve(eqn);
}

void eqn_output(struct EQN eqn)
{
if (eqn.n_solve==2)printf ("the number of root is %d\n root:\nx1 = %8f\nx2 = %8f",eqn.n_solve,eqn.x1,eqn.x2);
if (eqn.n