新手 学习C语言 遇到了很多问题

#include <stdio.h>
#include <math.h>
void main()
{
float equal(float ,float ,float);
float lessthan(float ,float ,float);
float morethan(float ,float ,float);
float a,b,c,z;
printf("ax^2+bx+c=0 please input a,b,c");
scanf("%f,%f,%f",&a,&b,&c);
z = b*b-4*a*c;
if(z>0)
{printf("answer = %f,answer = %f",morethan(a,b,c),morethan-(2*sqrt(b*b-4*a*c))/2z);}
if(z==0)
{printf("answer = %f",equal(a,b,c));}
if(z<0)
{printf("answer = %f%c,answer = %f%c",lessthan(a,b,c),i,lessthan(a,b,c)-2*sqrt(b*b-4*a*c))/2z,i);}
getch();

}
float equal(float q,float w,float e)
{
float u;
return(u = -w/2q);
}
float lessthan(float q,float w,float e)
{
float u;
return(u = (-w+sqrt(4*q*e-w*w))/2q);
}
float morethan(float q,float w,float e)
{
float u;
return(u = (-w+sqrt(w*w-4*q*e))/2q);
}
这个程序错误很多,目的是求ax^2+bx+c=0的根,请求高手帮我指点一下,谢谢。

第1个回答  推荐于2016-04-10
错误实在是多啊!!看得我晕呼呼的,所以我就自己写了一遍。

#include <stdio.h>
#include <math.h>
void main()
{
float equal(float,float);
float lessthan(float,float,float);
float morethan(float,float,float);
float a,b,c,z;
printf("ax^2+bx+c=0 \nplease input a,b,c\n");
scanf("%f,%f,%f",&a,&b,&c);
if(a==0) //判断是否是一元二次方程
{ printf("error!");
printf("ax^2+bx+c=0\nplease input a,b,c\n");
scanf("%f,%f,%f",&a,&b,&c);}
z = b*b-4*a*c;
if(fabs(z)<=0.00000001)//16
equal(a,b);
if(z>0)
morethan(a,b,z);
if(z<0)
lessthan(a,b,z);
getchar();
}
float equal(float a,float b)//24
{
printf("方程的解为%f\n",-b/(2*a));
return 0;}
float lessthan(float a,float b,float z)//28
{
printf("方程的解为:\nx1=%f+%fi\nx2=%f-%fi\n",-b/(2*a),sqrt(-z)/(2*a),-b/(2*a),sqrt(-z)/(2*a));
return 0;}
float morethan(float a,float b,float z)
{
printf("方程的解为:\nx1=%f\nx2=%f\n",-b/(2*a)+sqrt(z)/(2*a),-b/(2*a)-sqrt(z)/(2*a));
return 0;}

结果的图片上传不了,输入的时候注意要用逗号做分隔。本回答被提问者采纳
第2个回答  2009-12-07
你不要把函数都写到printf里面了,定义变量后再printf里面只写变量,把函数赋值写到外面,这样的成旭很乱很容易出错还不好找错
相似回答