用c语言从键盘任意输入a,b,c的值,编程计算并输出一元二次方程ax2+bx+c=0的根(较小的先输出)。根据一元二次方程的求根公式,令 p=−b2a,q=b2−4ac√2a 假设a,b,c的值能保证方程有两个不相等的实根(即b2-4ac>0) **输入提示信息:"Please enter the coefficients a,b,c:" **输入格式要求:"%f,%f,%f" **输出格式要求: "x1=%7.4f, x2=%7.4f\n" 程序运行示例: Please enter the coefficients a,b,c:1,4,2 x1=-3.4142, x2=-0.5858
时间: 2024-03-17 19:47:42 浏览: 17
好的,下面是 C 语言的代码实现:
```c
#include <stdio.h>
#include <math.h>
int main() {
float a, b, c, p, q, x1, x2;
printf("Please enter the coefficients a,b,c:");
scanf("%f,%f,%f", &a, &b, &c);
p = -b / (2 * a);
q = sqrt(b * b - 4 * a * c) / (2 * a);
x1 = p - q;
x2 = p + q;
printf("x1=%7.4f, x2=%7.4f\n", x1, x2);
return 0;
}
```
程序说明:
1. 首先从键盘输入 a、b、c 的值;
2. 根据一元二次方程求根公式计算出 x1、x2 的值;
3. 输出 x1、x2 的值,注意格式要求。
相关问题
从键盘任意输入 a、b、c 的值,编程计算并输出一元二次方程 ax2+bx+c=0 的两个实根, 否则就输出“方程无实根”的信息 c语言实现
可以的,下面是 C 语言实现代码:
#include <stdio.h>
#include <math.h>
int main()
{
float a, b, c, delta, x1, x2;
char ch;
printf("请依次输入 a、b、c 的值(用空格隔开):");
scanf("%f%f%f", &a, &b, &c);
getchar(); // 读取多余的回车字符
if (a == 0)
{
printf("a 不能为 0,这不是一元二次方程!\n");
return 0;
}
printf("解方程:%g*x^2 + %g*x + %g = 0\n", a, b, c);
printf("请输入问题:");
ch = getchar();
if (ch == 'a')
{
delta = b * b - 4 * a * c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2 * a);
x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程的两个实根为:%g 和 %g\n", x1, x2);
}
else if (delta == 0)
{
x1 = x2 = -b / (2 * a);
printf("方程的两个实根相等,均为:%g\n", x1);
}
else
{
printf("方程无实根!\n");
}
}
else
{
printf("我这里有一个笑话:");
printf("为什么 Java 程序员喜欢喝茶?因为 Java 是茶!\n");
}
return 0;
}
C语言编程计算并输出一元二次方程ax^2+bx+c=0的两个实根
当给定一元二次方程的系数 a、b、c 时,可以使用以下公式来计算方程的两个实根:
x1 = (-b + √(b^2 - 4ac)) / (2a)
x2 = (-b - √(b^2 - 4ac)) / (2a)
下面是使用 C 语言编写的示例代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, discriminant, x1, x2;
printf("请输入一元二次方程的系数:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
x1 = (-b + sqrt(discriminant)) / (2 * a);
x2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程的两个实根为:x1 = %.2lf,x2 = %.2lf\n", x1, x2);
} else if (discriminant == 0) {
x1 = x2 = -b / (2 * a);
printf("方程有两个相等的实根:x1 = x2 = %.2lf\n", x1);
} else {
double realPart = -b / (2 * a);
double imaginaryPart = sqrt(-discriminant) / (2 * a);
printf("方程的两个虚根为:x1 = %.2lf + %.2lfi,x2 = %.2lf - %.2lfi\n", realPart, imaginaryPart, realPart, imaginaryPart);
}
return 0;
}
```
你可以直接运行这段代码,并输入方程的系数 a、b、c,程序将会计算并输出方程的两个实根。