c++求二元一次方程的根#include#includevoid main(){printf(" ★☆欢迎使用二元一次方程求根工具☆★");float a,b,c,q,p,x1,x2;printf(" ★请输入a,b,c的值★");printf("a=");scanf("%f",&a);printf("b=");scanf("%f",&b);printf("c=");scanf("%f",&c);q=-b/2*a;p=sqrt(b*b-4*a*c);x1=q-p;x2=q+p;printf("x1=%f,
2019-05-07
c++求二元一次方程的根
#include
#include
void main()
{
printf(" ★☆欢迎使用二元一次方程求根工具☆★");
float a,b,c,q,p,x1,x2;
printf(" ★请输入a,b,c的值★");
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
q=-b/2*a;p=sqrt(b*b-4*a*c);
x1=q-p;x2=q+p;
printf("x1=%f,x2=%f,&x1&x2");
}
系统给了一个warnings :warning C4244:'=' :conversion from 'double' to 'float',possible loss of data
而且我用这个运行后,计算结果,总是得x1=0.000000,x2=一个负的可大的数!
我的公式逻辑上有错误吗?还有,我想加一个判定条件
如果b^2-4ac
优质解答
警告很正常 输出有问题
改了 功能完善了
#include
#include
#include
void main()
{
printf(" ★☆欢迎使用二元一次方程求根工具☆★");
float a,b,c,x1,x2;
while(1)
{
printf(" ★请输入a,b,c的值★");
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
x1=(-b-sqrt(b*b-4*a*c))/2*a;
x2=(-b+sqrt(b*b-4*a*c))/2*a;
if(b*b-4*a*c >= 0)
printf("x1=%f,x2=%f",x1,x2);
else
printf("没有实数解!");
printf("继续计算?");
char s[4];
scanf("%s",s);
if(s == "yes")
continue;
else if(s == "no")
break;
}
}
警告很正常 输出有问题
改了 功能完善了
#include
#include
#include
void main()
{
printf(" ★☆欢迎使用二元一次方程求根工具☆★");
float a,b,c,x1,x2;
while(1)
{
printf(" ★请输入a,b,c的值★");
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
x1=(-b-sqrt(b*b-4*a*c))/2*a;
x2=(-b+sqrt(b*b-4*a*c))/2*a;
if(b*b-4*a*c >= 0)
printf("x1=%f,x2=%f",x1,x2);
else
printf("没有实数解!");
printf("继续计算?");
char s[4];
scanf("%s",s);
if(s == "yes")
continue;
else if(s == "no")
break;
}
}