C 语言实例 - 一元二次方程
求一元二次方程:ax2+bx+c=0 的根。
输入三个实数a,b,c的值,且a不等于0。
实例
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,x1,x2,d;
printf("输入方程的三个系数:");
scanf("%f %f %f",&a,&b,&c);
if(a!=0)
{
d=sqrt(b*b-4*a*c);
x1=(-b+d)/(2*a);
x2=(-b-d)/(2*a);
if(x1<x2)
printf("%0.2f %0.2f\n",x2,x1);
else
printf("%0.2f %0.2f\n",x1,x2);
}
return 0;
}
运行结果:
输入方程的三个系数:1 2 1 -1.00 -1.00

文人墨客
一元二次方程可能有两个实数解,或者一个实数解,或者无实数解。
根据输入的三个系数 a、b、c 的判断解的情况:
#include <stdio.h> #include <math.h> int main(void) { double a ,b , c; double delat; double x1, x2; char ch; do { printf("请输入一元二次方程的三个系数:\n"); printf("请输入系数 a = \t"); scanf("%lf",&a); printf("请输入系数 b = \t"); scanf("%lf",&b); printf("请输入系数 c = \t"); scanf("%lf",&c); delat = b*b-4*a*c; if(delat>0) { x1= ( -b+sqrt(delat) )/2; x2= ( -b-sqrt(delat) )/2; printf("有2个实数解:x1 = %lf x2 = %lf\n",x1,x2); } else if(delat==0) { x1=( -b+sqrt(delat) )/2; printf("有2个相等实数解:x1=x2 = %lf\n",x1); } else printf("无实数解\n"); printf("是否继续吗:Y/N\n"); scanf(" %c",&ch); }while(ch=='y'||ch=='Y'); return 0; }