有趣的小程序
# include
#include
int main( )
{
double a, b, c, disc, x1, x2, p, q; //disc是判别式sprt( b*b - 4*a*c )
scanf("%lf %lf %lf", &a, &b, &c); //输入双精度浮点型变量的值要用格式声明“%lf”
disc = b*b - 4*a*c;
if (disc < 0)
{
printf("This equation hav't real roots\n");
}
else
{
p = -b / (2.0*a);
q = sqrt(disc)/(2.0*a);
x1 = p + q;
x2 = p - q; //求出方程的两个根
printf("real roots:\n x1 = %lf \n x2 = %lf \n", x1, x2);//输出方程的两个根
}
return 0;
}
改良版
------------------------------------------------------------------------------------------- # include
# include
int main(void)
{
double a, b, c;
double delta;
double x1;
double x2;
printf("请输入三个数字a, b, c:");
scanf("%lf %lf %lf",&a, &b, &c);
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
printf("该一元二次方程有两个解,x1 = %f, x2 = %f\n",x1, x2);
}
else if (delta == 0)
{
x1 = (-b)/(2*a);
x2 = x1;
printf("该方程有两个相等的解,x1 = x2 = %f\n",x1,x2);
}
else
{
printf("无解\n");
}
return 0;
}
------------------------------------------------------------------------------------------ 在此改良
------------------------------------------------------------------------------------------- # include
# include
int main(void)
{
double delta, a, b, c;
double x1;
double x2;
char ch;
do
{
printf("请输入a, b, c,:\n");
printf("a = ");
scanf(" %lf", &a);
printf("b = ");
scanf(" %lf", &b);
printf("c = ");
scanf(" %lf", &c);
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
printf("该一元二次方程有两个解,x1 = %f, x2 = %f\n\n\n",x1,x2);
}
else if (delta == 0)
{
x1 = (-b)/(2*a);
x2 = x1;
printf("该方程有两个相等的解,x1 = x2 = %f\n\n\n",x1,x2);
}
else
{
printf("该方程无解\n\n\n");
}
printf("您若想继续计算请输入:Y或y\n\n");
scanf(" %c", &ch);
printf("\n");
}
while ('y'==ch||'Y'==ch);
return 0;
}