用函数实现求二次方程的根,主函数只用来输入输出

#include<stdio.h>
#include<math.h>
int mode;
float Disc(float a, float b, float c)
{
 float disc;
 disc = b * b - 4 * a * c;
 return disc;
}
void case_1(float a, float b, float c)
{
 float p, q, d;
 d = Disc(a, b, c);
 p = -b / (2 * a);
 q = sqrt(d) / (2 * a);
 printf("该二次函数有两个实根:\nx1=%-5.2f\nx2=%-5.2f\n", p + q, p - q);
}
void case_2(float a, float b, float c)
{
 printf("该二次函数有两个相等实根:x=%-5.2f\n", -b / (2 * a));
}
void case_3(float a, float b, float c)
{
 double p, q, d;
 d = Disc(a, b, c);
 p = -b / (2 * a);
 q = sqrt(-d) / (2 * a);
 printf("该函数没有实根,但是有两个共轭复根:\nx1 = %-5.2f + %5.2fi\nx2 = %-5.2f - %5.2fi\n", p, q, p, q);
}
void choose(float a, float b, float c)
{
 double case_num;
 case_num = Disc(a, b, c);
 if (case_num > 0) mode = 1;
 else if (case_num == 0) mode = 2;
 else mode = 3;
}
void main()
{
 float a, b, c;
 printf("请输入a,b,c的值\n");
 scanf_s("%f%f%f", &a, &b, &c);
 choose(a, b, c);
 switch (mode)
 {
 case 1: case_1(a, b, c); break;
 case 2: case_2(a, b, c); break;
 case 3: case_3(a, b, c); break;
 }
}

版权声明:本文为o_oDe_lovely原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。