菜鸟请教简单c语言程序的错误

来源:百度知道 编辑:UC知道 时间:2024/06/24 10:06:58
求方程的根的程序,可以编译但是结果不对,如输入1 2 1,得不到-1的结果,请教高手。
#include<stdio.h>
#include<math.h>
void main()
{ void fun1(float,float,float);
void fun2(float,float,float);
int a,b,c,x;
void fun3(float,float,float);
printf("please input a,b,c:\n");
scanf("%f%f%f",&a,&b,&c);
if(b*b>4*a*c)
fun1(a,b,c);
else if(b*b==4*a*c)
fun2(a,b,c);
else if(b*b<4*a*c)
fun3(a,b,c);

}
void fun1(float a,float b,float c)
{ float z1,z2;
z1=-b/2/a+sqrt(b*b-4*a*c)/2/a;
z2=-b/2/a-sqrt(b*b-4*a*c)/2/a;
printf("the z1 is %f,z2 is %f.",z1,z2);
}

void fun2(float a,float b,float c)
{ float z;
z=-b/2/a;
printf("the z is %f.",z);
}

void fun3(float a,float b,float c)
{ float p,q;
p=-b/2/a;
q=sqrt(b*b-4*a*c)/2/a;
printf("the z1 is %f+i%f,z2 is %f-i%f.",p,q,p,q);

a,b,c类型错了,应该是float而非int

没错误啊,最好把scanf("%f%f%f",&a,&b,&c); 里的("%f%f%f")之间用逗号隔开

a,b,c类型错了,你定义的三个fun函数的形参是float类型,可你把int类型的a、b、c放进去。
再说了,方程的参数也不只是整形,定义成float好一些。

#include<stdio.h>
#include<math.h>
void main()
{ float a,b,c;
void fun1(float,float,float);
void fun2(float,float,float);

void fun3(float,float,float);
printf("please input a,b,c:\n");
scanf("%f%f%f",&a,&b,&c);
if(b*b>4*a*c)
fun1(a,b,c);
else if(b*b==4*a*c)
fun2(a,b,c);
else
fun3(a,b,c);

}
void fun1(float a,float b,float c)
{ float z1,z2;
z1=float(-b/2/a)+float(sqrt(b*b-4*a*c))/2/a;
z2=float(-b/2/a)-float(sqrt(b*b-4*a*c))/2/a;
printf("the z1 is %f,z2 is %f.\n",z1,z2);
}

void fun2(float a,float b,float c)
{ float z;
z=-b/2/a;
printf("the z is %.2f.\n",z);