永发信息网

#include <stdio.h> #include <math.h> void main() { int a,b,c; double x1,x2,disc; disc=b*

答案:2  悬赏:0  手机版
解决时间 2021-02-03 03:23
  • 提问者网友:遮云壑
  • 2021-02-02 08:26
#include
#include
void main()

{
int a,b,c;
double x1,x2,delta;
delta=b*b-4*a*c;
printf("请输入函数值(以空格分开):");
scanf("%d,%d,%d",&a,&b,&c);
if(a==0)
{
printf("该方程不是一元二次方程");
}
else
{
if(delta<0)
{
printf("该方程无解\n");
}
else if(delta==0)
{
x1=(-b)/(2*a);
printf("方程有一个解:%lf\n",x1);
}
else
{
x1=(-b+sqrt(delta))/(2*a);
x2=(-b-sqrt(delta))/(2*a);
printf("该方程有两个解:%lf,%lf\n",x1,x2);
}
}
}
不是方程无解就是算不出数,求解那里错了
最佳答案
  • 五星知识达人网友:几近狂妄
  • 2021-02-02 09:17
delta=b*b-4*a*c; delta的计算要放到scanf后面,要输入系数后才能计算。
输入三个系数要用逗号分割,而不是用空格分隔开。
全部回答
  • 1楼网友:慢性怪人
  • 2021-02-02 10:50
程序执行顺序的问题,现在的代码中delat值在初始化之后就不会再改变了,应该在输入a,b,c值之后再计算delat;下面解方程的时候也应该先计算x1,x2值然后在输出,像这样: #include #include void main() { float a,b,c; double delat=0; double x1,x2; printf("输入三个数"); scanf("%f,%f,%f",&a,&b,&c); delat=b*b-4*a*c; if(delat>0) { x1=(-b+sqrt(delat))/(2*a); x2=(-b-sqrt(delat))/(2*a); printf("原方程有两个不同的解,x1=%f,x2=%f\n",x1,x2); } else if(delat==0) { x1=(-b)/(2*a); x2=x1; printf("原方程有两个相同的解,x1=x2=%f\n",x1,x2); } else printf("原方程无解\n"); } 还有a,b,c如果是整型量的话应该在计算delat,x1,x2时候声明类型转换,否则会按整数计算,结果不正确了,把a,b,c定义成浮点型或者双精度型就好了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯