void
main()
{
float
a=0,b=0,c=0,d=0,x1=0,x2=0,e=0/*定义变量*/
printf("axe2+bx+c=0,(a,b,c):\n")/*提示输入3个数*/
scanf("%f,%f,%f",&a,&b,&c)/*输入的时候用float型
*/
e=sqrt(d)/*根号d
*/
x1=(-b+e)/(2*a)/*计算方程,公式有点不点,逻辑*/
x2=(-b-e)/(2*a)/*计算方程*/
printf("\n
positive:\n
x1=%f,\n
negative:\nx2=%f",x1,x2)/*输出x1
x2,输出的时候也要用float型*/
}
else
printf("equation")/*方程无解*/
getch()
}
//经修改,可以正常运行,
还有建议下,你就在定义变量的时候不要一大串一起定义类型,
有时候变量的类型是不无法隐型转换的,就会出错。
就像程序里面的,开根号又不一定都开出个整数,大多都是带小数的,就应该定义成float型,
最后的解也会直接化成带小数的,要是你用long(长整型,也是整型的一种),
那小数点后面就将被程序自动省略,那问题可就大了,呵呵,。
还在做为printf输出的时候,要给点提示,不然人家也不知道,这a,b,c是干嘛用的。
#include <stdio.h>#include <math.h>
int main(void)
{
int a, b, c //定义一元二次方程的三个数值;
printf("请依次输入一元二次方程的三个参数a b c,中间以空格隔开\n")
scanf("%d %d %d", &a, &b, &c) //依次输入一元二次方程的三个参数
double delta = b*b - 4*a*c //定义delta的值为b*b - 4*a*c
double x1 = (-b + sqrt(delta))/(2 * a)
double x2 = (-b - sqrt(delta))/(2 * a)
if (delta>0) //delta大于0时,方程有两个解
{
printf("一元二次方程有两个解\n")
printf("一元二次方程的第一个解,x1 = %f\n",x1)
printf("一元二次方程的第二个解,x2 = %f\n",x2)
}
else if (delta ==0) //delta等于0,方程有两个相同的解
{
printf("一元二次方程有两个相同的解\n")
printf("一元二次方程的解为x1 = x2 =%f\n",x1)
}
else //delta小于0时,方程没有解
{
printf("一元二次方程没有解\n")
}
return 0
}