#include <stdio.h>
#include <math.h>
//简单版
int main()
{ //将三个系数保存到计算机中
int a = 1; //“=”不表示相等,而是表示赋值
int b = 3;
int c = 2;
double delta; //delta存放的是b*b -4*a*c的值
double x1, x2; //分别用于存放一元二次方程的两个解
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 (0 == delta)
{
x1 = (-b) / (2*a);
x2 = x1; //左边值赋给右边
printf("该一元二次方程有一个唯一解,x1 = x2 = %f\n", x1);
}
else
{
printf("无解\n");
}
return 0;
}
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, c; //定义一元二次方程的三个系数
char k; //用于后面判断是否要继续输入
double delta, x1, x2; /*delta用来存储b*b -4*a*c的值;x1和x2的值分别为方程的解*/
do
{
printf("请输入一元二次方程的三个系数,用回车分隔:\n");
printf("a = ");
scanf("%lf", &a);
while(getchar() != '\n' );
/*容错处理,scanf后面都加上这一句,作用是清空输入缓冲区,以防用户乱输入*/
printf("b = ");
scanf("%lf", &b);
while(getchar() != '\n' );
printf("c = ");
scanf("%lf", &c);
while(getchar() != '\n' );
delta = b*b -4*a*c;
if (delta > 0)
{
x1 = (-b +sqrt(delta)) / (2*a);
x2 = (-b -sqrt(delta)) / (2*a);
printf("有两个解,x1 = %lf, x2 = %lf\n", x1, x2);
}
else if (0 == delta)
{
x1 = x2 = (-b) / (2*a);
printf("有唯一解,x1 = x2 = %lf\n", x1);
}
else
{
printf("无实数解\n");
}
/*询问是否想继续输入*/
printf("您想继续吗,Y想,N不想:");
scanf("%c", &k); //输入Y或者N,表示“想”或“不想”
while(getchar() != '\n' );
}while ('Y' == k);//采用do{;}while;
return 0;
}
高级版是从手把手教你学C语言-吴明杰 曹宇 吴丹-微信读书 (qq.com)学习的