当前位置: 代码迷 >> C语言 >> 能帮我看一下错误吗??
  详细解决方案

能帮我看一下错误吗??

热度:261   发布时间:2005-10-21 22:24:00.0
能帮我看一下错误吗??

#include<stdio.h> #include<math.h>

void main() { float a,b,c,x1,x2,p,q,disc; printf("please enter the number of a,b,c:\n"); scanf("a=%f,b=%f,c=%f",&a,&b,&c);

p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); if(disc>=0) { if(disc==0) { x1=x2=p; } else x1=p+q; x2=p-q; } printf("\n\nx1=%5.2f,x2=%5.2f",x1,x2);

if(disc<0)

printf("方程无解"); }这个程序为什么调试的时候没错,但是结果却是错的呢?能帮我看一下吗??

搜索更多相关的解决方案: number  include  please  

----------------解决方案--------------------------------------------------------
你先告诉我你是怎么输入的?

scanf("a=%f,b=%f,c=%f",&amp;a,&amp;b,&amp;c);
----------------解决方案--------------------------------------------------------
先不考虑那个,你就当那个是
scanf("f,%f,%f",&amp;a,&amp;b,&amp;c);
这样子看一下,那个我是看到别的地方 那样写的,所以也那样写了一下,
----------------解决方案--------------------------------------------------------
[注意]

#include<stdio.h> #include<math.h>

void main() { float a,b,c,x1,x2,p,q,disc; printf("please enter the number of a,b,c:\n"); scanf("a=%f,b=%f,c=%f",&a,&b,&c);

p=-b/(2*a); disc=b*b-4*a*c; q=sqrt(disc)/(2*a); if(disc>0) {x1=p+q; x2=p-q;} printf("\n\nx1=%5.2f,x2=%5.2f",x1,x2); if(disc==0) { x1=x2=p; }

printf("\n\nx1=x2=%5.2f",x1,x2);

if(disc<0)

printf("方程无解"); } 你看这样行不行? 可能你的第一个if少了一个}


----------------解决方案--------------------------------------------------------
输入的格式和你scanf里的格式一样吗,你的程序没有错,问题肯定是你输入数据的格式错了,输入一个数后用逗号格开,而不是回车
----------------解决方案--------------------------------------------------------
是这样哎,谢谢各位!!!
----------------解决方案--------------------------------------------------------

#include<stdio.h> #include<math.h>

void main() { float a,b,c,x1,x2,p,q,disc; printf("please enter the number of a,b,c:\n"); scanf("a=%f,b=%f,c=%f",&a,&b,&c);

p=-b/(2*a); disc=b*b-4*a*c; if(disc>=0) //有解 { q=sqrt(disc)/(2*a); //这句放在外面会出错,disc<0时系统无法求出q if(disc==0) x1=x2=p; else { //花括号打错地方了吧,打在上面没用 x1=p+q; x2=p-q; } printf("\n\nx1=%5.2f,x2=%5.2f",x1,x2); //这句属于有解的情况,不应该在括号外 } if(disc<0) //无 解

printf("方程无解"); }


----------------解决方案--------------------------------------------------------
之所以结果会出错,是因为程序编写逻辑上有错误。
建议楼主以后注意一下括号的运用和程序语句执行先后的问题。
----------------解决方案--------------------------------------------------------
scanf("a=%f,b=%f,c=%f",&amp;a,&amp;b,&amp;c)改为scanf("%f,%f,%f",&amp;a,&amp;b,&amp;c)
输入时为a,b,c回车.

----------------解决方案--------------------------------------------------------
对 输入的时候要有逗号
----------------解决方案--------------------------------------------------------
  相关解决方案