请编写程序,解一元一次方程 ax2+bx+c=0 。已知一元二次方程的求根公式为: 要求:(1) 若 a=0,则为一元一次方程。 若 b=0,则方程有唯一解,输出这个解; 若 b=0,c=0,则方程无解,输出“无解”; 若 b=0,c=0,则方程有无穷多解,输出“无穷多解”。 (2) 若 a=0,则为一元二次方程。 若 Δ>0,则方程有两个不等的实根,输出这两个根; 若 Δ=0,则方程有两个相等的实根,输出这两个根; 若 Δ<0,则方程有两个共轭的虚根,输出这两个根。注:所有实数均输出6位有效数字,且不输出末尾无意义的0和小数点。
时间: 2023-04-04 08:02:57 浏览: 173
我可以回答这个问题。以下是解一元一次方程的程序:
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c, x;
printf("请输入一元一次方程的系数a、b、c:\n");
scanf("%lf%lf%lf", &a, &b, &c);
if (a == 0)
{
if (b != 0)
{
x = -c / b;
printf("方程有唯一解:x=%.6lf\n", x);
}
else if (c != 0)
{
printf("方程无解\n");
}
else
{
printf("方程有无穷多解\n");
}
}
else
{
double delta = b * b - 4 * a * c;
if (delta > 0)
{
double x1 = (-b + sqrt(delta)) / (2 * a);
double x2 = (-b - sqrt(delta)) / (2 * a);
printf("方程有两个不等的实根:x1=%.6lf,x2=%.6lf\n", x1, x2);
}
else if (delta == 0)
{
x = -b / (2 * a);
printf("方程有两个相等的实根:x1=x2=%.6lf\n", x);
}
else
{
double realPart = -b / (2 * a);
double imagPart = sqrt(-delta) / (2 * a);
printf("方程有两个共轭的虚根:x1=%.6lf+%.6lfi,x2=%.6lf-%.6lfi\n", realPart, imagPart, realPart, imagPart);
}
}
return 0;
}
阅读全文