万和恒温热水器故障e1:请教c语言(帮帮忙,谢谢了)

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 07:31:53
#include <stdio.h>
void main()
{ int m;
scanf("%d",&m);
printf("\t%2d!=%d\n",m,fac(m));
}
long fac(int n)
{ if(n==1) return 1l;
else return n*fac(n-1);
}
请问上面的指令哪里出错了,为什么?提示:
Type mismatch in redeclaration of ‘fac’.
请指教,再次感谢!
再问下,这跟以下程序有什么区别,为什么下面的没错!
main()
{ int a,b,c;
scanf("%d,%d,",&a,&b);
c=max(a,b);
printf("max=%d",c);
}
int max(int x,int y)
{ int z;
if (x>y) z=x;
else z=y;
return z;
}
谢谢了!

在编译器编译到main函数中时,不认识fac这个函数,所以你需要前置声明或者干脆把函数体都放在main函数之前声明。

#include <stdio.h>
long fac(int n)
{ if(n==1) return 1l;
else return n*fac(n-1);
}
void main()
{ int m;
scanf("%d",&m);
printf("\t%2d!=%d\n",m,fac(m));
}



#include <stdio.h>
long fac(int n);
void main()
{ int m;
scanf("%d",&m);
printf("\t%2d!=%d\n",m,fac(m));
}
long fac(int n)
{ if(n==1) return 1l;
else return n*fac(n-1);
}

你的fac()的返回值定义的是long, 输出时应该是%ld
而且你要把这个函数定义在main()函数之前, 就是先写这个函数, 再写main()函数