#include
#include
int main(void)
{
int a,b,c;
//double d = b*b - 4*a*c; // 此时还未输入a, b, c三个数,所以计算的d不正确
double x1;
double x2;
printf("请输入a,b,c三个数:");
scanf("%d %d %d", &a, &b, &c);
printf("a是%d, b是%d, c是%d\n", a , b ,c);
double d = b*b - 4*a*c; // 将d的计算移到这里,才能计算出正确的值
if (d>0)
{
x1 = (-b + sqrt(d)) / (2*a);
x2 = (-b - sqrt(d)) / (2*a);
printf("有两个值x1 = %d,x2 = %d");
}
else if (d ==0)
{
x1 = (-b) / (2*a);
x1 = x2;
printf("只有一个值 x1 = %d");
}
else
{
printf("无解\n");
}
return 0;
}
double d = b*b - 4*a*c;这句是需要初始化的,初始化a b c
因为变量创建的时候是无值的,必须初始化才能使用
因为是顺序编译的,你可以把d的声明和初始化放在变量输入以后
或者原顺序不变,在abc声明的时候全部复制1,应该是可行的,你试试
1)出现不是语法错误的语法问题[1][2]
if (d > 0)
{
....
....
printf("有两个值x1 = %d,x2 = %d"); // [1]
//改为printf("有两个值x1 = %d,x2 = %d",x1,x2);
}
else if (d == 0)
{
.....
printf("只有一个值 x1 = %d"); //[2]
//改为 printf("只有一个值 x1 = %d",x1);
}
2)不仅仅是为了编译通过吧,也要判断每个条件的结果是否真正自己思维的,不然的话进入这些条件根本不输出正确的东西。
将double d = b*b - 4*a*c;放在输入语句后面应该就可以了