先向大哥哥们道个歉哈,积分只有40分,除却紧急问题的20分,就剩下20分咯。希望好心的大哥们不要嫌少哈。。。嘿嘿,笑笑,,,(:~)(:~)(:~)~~~问题如下:求一元二次方程ax*x bx c=0的根.书上给出的是用void声明的空类型函数的代码,然后提示用main函数调用
先向大哥哥们道个歉哈,积分只有40分,除却紧急问题的20分,就剩下20分咯。希望好心的大哥们不要嫌少哈。。。嘿嘿,笑笑,,,(:~)(:~)(:~)~~~问题如下:求一元二次方程ax*x bx c=0的根.书上给出的是用void声明的空类型函数的代码,然后提示用main函数调用它.不知道main在调用这种无返回值函数且函数打印值不止一个的情况下,该怎么写main主函数代码.为了方便大家快速看懂,我对代码进行了注释。当a=0,b=0时,方程无解;当a=0,b!=0,方程有一个解;当a!=0,又有两种情况,即判断Δ(德儿塔)的值.Δ>=0和Δ<0的情况.
****************************OK,代码如下:*****************************# include "math.h"void float get_equa(float a,float b, float c) //注释:声明空类型float函数get_equa()
{
if(a==0.0) //注释:系数a的值为0的情况.
if(b==0.0) //注释:a值为0的情况下b也为0.
printf("Data error, No answer to show!"); //注释:非一元二次方程式,打印“Data error...”
else
printf("The equation only have one root: %f",-c/b); //注释:打印唯一解.
else
{
double disc,term1,term2,root_1,root_2,two_a; //注释:声明必要double型变量. //注释:一元二次方程式的根有两个,表达式这里不好写,但数学上是这样读的:X 等于 2A 分之 负B 加减 根号下 B平方 减 4AC.(就是那个表达式的读法.)
disc=b*b-4a*c;
two_a=2*a;
term1=-b/twa_a;
term2=sqrt(fabs(disc))/two_a; //注释:根号下B平方减4AC除以2A的值.
root=term1-term2;
root2=term1 term2;
if(disc<0)
printf("The equation only have the complex root:
Real part =%f, Imag part =%f",term1,term2); //注释:打印虚部和实部的值.
else
printf("The equation have two roots:
One is %f
Another one is %f",root_1,root_2); //注释:打印它的两个实数根.
}
}******************************代码完******************************
展开
全部