当前位置: 代码迷 >> C语言 >> [求助]错在哪里?
  详细解决方案

[求助]错在哪里?

热度:280   发布时间:2007-07-28 21:12:08.0
[求助]错在哪里?
#include "Stdio.h"
#include "Conio.h"

long f1(int a)
{
int k;
long b;
k=a*a;
b=f2(k);
return(b);
}

long f2(int c)
{
long fac;

if(c<0)
printf("error!");
else if(c==0||c==1)
fac=1;
else
fac=c*f2(c-1);
return(fac);
}


main(void)
{
int i,j;
long sum;

printf("input two number:");
scanf("%d%d\n",&i,&j);
sum=f1(i)+f1(j);
printf("%d 2!+%d 2!=%ld\n",i,j,sum);
getch();
return 0;
}

出现错误 noname.c 16: 与'f2'声明中的类型不匹配,是怎么回事?
搜索更多相关的解决方案: long  include  number  return  

----------------解决方案--------------------------------------------------------
f1,f2位置交换一下
----------------解决方案--------------------------------------------------------
2楼正解

也可以在long f1(int c) 这行之前声明一下f2,即加long f2(int c);这句
----------------解决方案--------------------------------------------------------
上几楼说的都不错
追究其根本原因就是要调用其它函数在主调函数之中要对被调函数进行声明,应该与定义时的函数一致,这叫做函数原型。
2楼说的可以解决你的问题,这是因为如果被调函数放在主调函数之前定义的话,在主调函数中可以省略声明。反之则必须加以声明,否则编译系统在检查时会报错。
----------------解决方案--------------------------------------------------------
谢谢大虾们的指点,明白了。
----------------解决方案--------------------------------------------------------
细心一点就好啦
----------------解决方案--------------------------------------------------------
  相关解决方案