c语言改错,急急
- 提问者网友:温柔港
- 2021-05-11 16:00
#include <math.h>
main()
{ float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",a,b,c);
disc=bb-4ac;
p=-b/(2a); q=sqrt(disc)/(2a);
x1=p+q; x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
- 五星知识达人网友:一袍清酒付
- 2021-05-11 17:04
#include <stdio.h>
#include <math.h>
main()
{ float a,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",a,b,c);
disc=b*b-4ac;//少个乘号
p=-b/(2*a); q=sqrt(disc)/(2*a);//还是少乘号
x1=p+q; x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
- 1楼网友:毛毛
- 2021-05-11 20:28
这是我修改后并通过检测的程序,顺便再说下一个一元二次方程有根的条件是disc(b*b-4*a*c)大于0
#include <stdio.h> #include <math.h> int main() { float a,b,c,disc,x1,x2,p,q; scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc=b*b-4*a*c; if(disc>=0) { p=-b/(2*a); q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2); } else printf("Error"); system("PAUSE"); return 0; }
- 2楼网友:从此江山别
- 2021-05-11 19:54
这个程序的语法错误,是表达式中缺少乘号。C 语言并不能理解数学中两项相连代表乘法。
disc=bb-4ac; p=-b/(2a); q=sqrt(disc)/(2a);
要改为:
disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a);
第二个严重错误,是 scanf 后面的列表应该是变量的地址而不是变量本身:
a,b,c
要改为:
&a,&b,&c
再进一步说,
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
这种写法一般不会是编程员的原意,因为这个其实不会提供任何提示,而是要求使用程序的人按照格式输入:
a=2,b=-5,c=3
这是对用户非常不友善的。编程员的原意可能是:
printf("a=");
scanf("%f", &a);
printf("b=");
scanf("%f", &b);
printf("c=");
scanf("%f", &c);
再进一步改良,就要考虑到 disc 小于 0 的时候,程序会出错,要加 if 语句来避免了。
楼主要自己判断程序要修改到哪个地步。
- 3楼网友:撞了怀
- 2021-05-11 19:36
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c; p=-b/(2*a); q=sqrt(disc)/(2*a); 这么基础的,说不定哪里还有错,我没有调试,你自己看到办咯,
- 4楼网友:老鼠爱大米
- 2021-05-11 18:20
scanf("a=%f,b=%f,c=%f",&a,&b,&c); disc = b * b - 4*a * c;
p=-b/(2*a); q=sqrt(disc)/(2*a);
- 5楼网友:佘樂
- 2021-05-11 17:49