酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

c语言输入一元二次方程的a、b、c ,求该方程的根。 样例: 输入: 1 2 1 输出 -1.000000 -1.000000 输入: 4 5 6 输出 no

在C语言中,可以通过求解一元二次方程 \( ax^2 + bx + c = 0 \) 的根来实现这个功能。一元二次方程的根可以通过判别式 \( \Delta = b^2 - 4ac \) 来判断: - 如果 \( \Delta > 0 \),方程有两个不同的实数根。 - 如果 \( \Delta = 0 \),方程有一个重根。 - 如果 \( \Delta < 0 \),方程没有实数根。 下面是一个完整的C语言程序,用于输入一元二次方程的系数 \( a \)、\( b \) 和 \( c \),并求解方程的根: ```c #include <stdio.h> #include <math.h> int main() { double a, b, c; double discriminant, root1, root2; // 输入系数 a, b, c printf("请输入一元二次方程的系数 a, b, c: "); scanf("%lf %lf %lf", &a, &b, &c); // 计算判别式 discriminant = b * b - 4 * a * c; // 判断判别式的值 if (discriminant > 0) { // 两个不同的实数根 root1 = (-b + sqrt(discriminant)) / (2 * a); root2 = (-b - sqrt(discriminant)) / (2 * a); printf("%.6lf %.6lf\n", root1, root2); } else if (discriminant == 0) { // 一个重根 root1 = -b / (2 * a); printf("%.6lf %.6lf\n", root1, root1); } else { // 没有实数根 printf("no\n"); } return 0; } ``` 解释 1. 输入系数:使用 `scanf` 函数从用户处读取三个双精度浮点数 \( a \)、\( b \) 和 \( c \)。 2. 计算判别式:判别式 \( \Delta = b^2 - 4ac \) 用于确定方程的根的性质。 3. 判断判别式的值: - 如果 \( \Delta > 0 \),方程有两个不同的实数根,使用公式 \( x_1 = \frac{-b + \sqrt{\Delta}}{2a} \) 和 \( x_2 = \frac{-b - \sqrt{\Delta}}{2a} \) 计算根。 - 如果 \( \Delta = 0 \),方程有一个重根,使用公式 \( x = \frac{-b}{2a} \) 计算根。 - 如果 \( \Delta < 0 \),方程没有实数根,输出 "no"。 样例运行 - 输入:`1 2 1` 输出:`-1.000000 -1.000000` - 输入:`4 5 6` 输出:`no` 这个程序可以处理各种情况,并正确输出方程的根或提示没有实数根。 [2024-10-17 21:55:37 | AI写代码神器 | 707点数解答]

相关提问