解题思路:
这段代码是用C语言编写的,用于求解二次方程的根。二次方程的形式为ax^2 + bx + c = 0。代码中定义了三个函数:root_above、root_equal和root_belove,分别用于处理二次方程的三种情况:1. 当判别式d > 0时,方程有两个不相等的实根,调用root_above函数计算并输出这两个实根;
2. 当判别式d = 0时,方程有一个实根(两个相等),调用root_equal函数计算并输出这个实根;
3. 当判别式d < 0时,方程有两个共轭复数根,调用root_belove函数计算并输出这两个复数根。
在main函数中,首先输入二次方程的系数a、b、c,然后计算判别式d,根据d的值调用相应的函数求解二次方程的根。
代码:
#include <stdlib.h> #include <stdio.h> #include <math.h> void root_above(float a,float b,float c) { float x1_r,x2_r; float d = b*b-4*a*c; x1_r = (0-b + sqrtf(d))/2/a; x2_r = (0-b - sqrtf(d))/2/a; printf("x1=%.3f x2=%.3f\n",x1_r,x2_r); } void root_equal(float a,float b,float c) { float x1_r,x2_r; x1_r = (0-b )/2/a; x2_r = (0-b )/2/a; printf("x1=%.3f x2=%.3f\n",x1_r,x2_r); } void root_belove(float a,float b,float c) { float x1_r,x1_i,x2_r,x2_i; float d = 4*a*c - b*b; x1_r = (0-b )/2/a; x2_r = (0-b )/2/a; x1_i = (sqrtf(d))/2/a; x2_i = (0- sqrtf(d))/2/a; printf("x1=%.3f+%.3fi x2=%.3f%.3fi\n",x1_r,x1_i,x2_r,x2_i); } int main(void) { float a,b,c; float d; float x1_r,x1_i,x2_r,x2_i; scanf("%f %f %f",&a,&b,&c); d = b*b-4*a*c; if(d > 0 ){ root_above(a,b,c); }else if(d == 0){ root_equal(a,b,c); }else{ root_belove(a,b,c); } return 0; }
0.0分
0 人评分