代码块:
方法1:
#include
#include
#include
float GT1(float x, float y, float z); //定义大于0时1号实根函数
float GT2(float x, float y, float z); //定义大于0时2号实根函数
void LT(); //定义小于0时函数
float EQ(float x, float y, float z); //定义等于0时函数
float m; //定义全局变量,方程判别式
int main()
{
float a, b, c, r1, r2;
scanf("%f %f %f", &a, &b, &c); //输入方程系数
m=b*b-4*a*c; //得出判别式值
if (m>0){
r1=GT1(a, b, c);
r2=GT2(a, b, c);
printf("The result is %.4f and %.4f\n", r1, r2); //调用大于0时函数并输出两个实根
}
else if (m<0)
LT(); //调用无解时的函数
else{
r1=EQ(a, b, c);
printf("The result is %.4f\n", r1); //调动等于0时函数并输出根
}
system("pause");
return 0;
}
extern float m; //引用全局变量
//大于0时1号实根函数
float GT1(float x, float y, float z)
{
float n;
n=((-1)*y+sqrt(m))/(2*x);
return n;
}
extern float m; //引用全局变量
//大于0时2号实根函数
float GT2(float x, float y, float z)
{
float n;
n=((-1)*y-sqrt(m))/(2*x);
return n;
}
//小于0时函数,无解函数
void LT()
{
printf("There is no real root!\n");
}
extern float m; //引用全局变量
//等于0时函数
float EQ(float x, float y, float z)
{
float n;
n=((-1)*y)/(2*x);
return n;
}
方法2:
#include
#include
#include
void greater(float x, float y, float z, float m); //定义大于0时函数
void equal(float x, float y, float z, float m); //定义等于0时函数
void less(float x, float y, float z, float m); //定义小于0时函数
void function(float j, float k, float l, float n); //定义判别式函数
int main()
{
float a, b, c, d;
printf("Please enter A, B, C: "); //输入方程系数
scanf("%f %f %f", &a, &b, &c);
d=b*b-4*a*c; //得出判别式值
function(a, b, c, d); //调动判别式函数
system("pause");
return 0;
}
//判别式函数,通过判断判别式值,调用相应的函数
void function(float j, float k, float l, float n)
{
n>0 ? greater(j, k, l, n) : (n==0 ? equal(j, k, l, n) : less(j, k, l, n));
}
//大于0时函数
void greater(float x, float y, float z, float m)
{
printf("X1=%.2f, X2=%.2f\n", ((-1)*y+sqrt(m))/(2*x), ((-1)*y-sqrt(m))/(2*x));
}
//等于0时函数
void equal(float x, float y, float z, float m)
{
printf("X=%.2f\n", ((-1)*y)/(2*x));
}
//小于0时函数
void less(float x, float y, float z, float m)
{
printf("The equation is unsolvable\n");
}