c语言有关函数调用的题目

来源:百度知道 编辑:UC知道 时间:2024/05/25 11:20:19
#include<stdio.h> //目的是求一个二次方程a*x^2+b*x+c=0的根(包括虚数根)
#include<math.h>
void main()
{
void max(double,double,double);
void min(double,double,double);
void aver(double,double,double);
int a,b,c,der;
scanf("%d%d%d",&a,&b,&c);
der=b*b-4*a*c;
if(der>0)
max(double a,double b,double c);
else if(der<0)
min(double a,double b,double c);
else if(der==0)
aver(double a,double b,double c);
}
void max(double a,double b,double c)
{
double r1,r2,der;
der=sqrt(b*b-4*a*c)/(2*a);
r1=-b/(2*a)+der;
r2=-b/(2*a)-der;
printf("the result is %lf,%lf\n",r1,r2);
}
void min(double a,double b,double c)
{
double r,der;
der=sqrt(4*a*c-b*b)/(2*a);
r=-b/(2*a);
printf("the result is %lf+%lf*i,%lf-%lf*i\n",r,der,r,der);
}
void aver(double a,double b,double c)
{
double r,der


if(der>0)
max((double)a,(double)b,(double)c);
else if(der<0)
min((double)a,(double)b,(double)c);
else if(der==0)
aver((double)a,(double)b,(double)c);

if(der>0)
max( a, b, c);
else if(der<0)
min( a, b, c);
else if(der==0)
aver( a, b, c);
你对函数定义、申明、调用三大概念还不是很清楚。这个地方是函数的调用,调用时的实参是对已经定义过的实参变量的应用是不能带类型的。

数据类型不对,改下:
if(der>0)
max((double)a,(double)b,(double)c);
else if(der<0)
min((double)a,(double)b,(double)c);
else if(der==0)
aver((double)a,(double)b,(double)c);
编译通过,结果正确!