编写程序,求一元二次方程ax2+bx+c=0的根(保留2位小数)。系数a、b、c为浮点数,其值在运行时由键盘输入
答案:2 悬赏:0 手机版
解决时间 2021-02-11 13:59
- 提问者网友:凉末
- 2021-02-10 18:36
编写程序,求一元二次方程ax2+bx+c=0的根(保留2位小数)。系数a、b、c为浮点数,其值在运行时由键盘输入
最佳答案
- 五星知识达人网友:时间的尘埃
- 2021-02-10 18:51
首先是d=b*b-4*a*c;要放在输入后面!!!
printf("方程有两个不同虚根:x1=%.2f x2=%.2f\n",(-b+sqrt(-d)*i)/(2*a),(-b-sqrt(-d)*i)/(2*a);
感觉这个会出错,输出结果:“方程有两个不同虚根:x1=··· x2=···”应该不会有i,i会变成未定义
试试这样prinf("方程有两个不同虚根: x1:%.2f+%.2fi x2:%.2f+%.2fi",
-b/(2*a),sqrt(-d)/(2*a),b/(2*a),-sqrt(-d)/(2*a));需要加括号的加上追问可是我一运行就是这个样子。。。
追答#include
#include
int main (void){
double a, b, c, d;
printf("输入一元二次方程的系数a, b, c: ");
scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if(a==0&&b==0&&c==0)
printf("方程无穷解!\n");
else if(a==0&&b==0&&c!=0)
printf("方程无解!\n");
else if(a==0&&b!=0&&c!=0)
printf("方程有一个根: x=%.2f\n",-c/b);
else if(a!=0&&d==0)
printf("方程有两个相同实根: x1=x2=%.2f\n",-b/(2*a));
else if(a!=0&&d>0)
printf("方程有两个不同实根:x1=%.2f x2=%.2f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(a!=0&&d<0)
printf("方程有两个不同虚根 x1:%.2f+%.2fi x2:%.2f+%.2fi",-b/(2*a),(sqrt(-d))/(2*a),b/(2*a),(-sqrt(-d))/(2*a));
return 0;
}
可以运行
printf("方程有两个不同虚根:x1=%.2f x2=%.2f\n",(-b+sqrt(-d)*i)/(2*a),(-b-sqrt(-d)*i)/(2*a);
感觉这个会出错,输出结果:“方程有两个不同虚根:x1=··· x2=···”应该不会有i,i会变成未定义
试试这样prinf("方程有两个不同虚根: x1:%.2f+%.2fi x2:%.2f+%.2fi",
-b/(2*a),sqrt(-d)/(2*a),b/(2*a),-sqrt(-d)/(2*a));需要加括号的加上追问可是我一运行就是这个样子。。。
追答#include
#include
int main (void){
double a, b, c, d;
printf("输入一元二次方程的系数a, b, c: ");
scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if(a==0&&b==0&&c==0)
printf("方程无穷解!\n");
else if(a==0&&b==0&&c!=0)
printf("方程无解!\n");
else if(a==0&&b!=0&&c!=0)
printf("方程有一个根: x=%.2f\n",-c/b);
else if(a!=0&&d==0)
printf("方程有两个相同实根: x1=x2=%.2f\n",-b/(2*a));
else if(a!=0&&d>0)
printf("方程有两个不同实根:x1=%.2f x2=%.2f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(a!=0&&d<0)
printf("方程有两个不同虚根 x1:%.2f+%.2fi x2:%.2f+%.2fi",-b/(2*a),(sqrt(-d))/(2*a),b/(2*a),(-sqrt(-d))/(2*a));
return 0;
}
可以运行
全部回答
- 1楼网友:几近狂妄
- 2021-02-10 18:57
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯