c 语言 TC编译时 提示类型不匹配

来源:百度知道 编辑:UC知道 时间:2024/06/24 13:25:11
#include <stdio.h>
main()
{
int a,n;
float su;

su=0;
printf("pls enter the num");
printf("\n");
scanf("%d",&n);
printf("\n");
su=jiecheng(n);
printf("%f",su);

}

float jiecheng( int x)
{ int z,i;
float y;
for (i=1;i<=x;i++)
{
z=z*i;
y=y+z;
}
return(y);
}

为什么会提示类型不匹配呢
我加上了为什么计算结果不对呢。比如说应该是1!+2!+3!=9但是结果是24885。

#include <stdio.h>
unsigned long jiecheng(int x);
main()
{
int a,n;
unsigned long su;

su=0l;
printf("pls enter the num\n");
scanf("%d",&n);
su=jiecheng(n);
printf("%u",su);
}

unsigned long jiecheng( int x) /*用float并不能扩大计算的能力,因为float是不精确的*/
{
int i;
unsigned long z=1,y=0; /*变量需要初始化*/
for (i=1;i<=x;i++)
{
z=z*i; y=y+z;
}
return(y);
}

float jiecheng( int x)

函数没有声明。

在#include <stdio.h> 换行加上
float jiecheng( int x);
这是对函数的声明。。
也可以直接加上 (#include <stdio.h> 换行加上)
float jiecheng( int x)
{ int z,i;
float y;
for (i=1;i<=x;i++)
{
z=z*i;
y=y+z;
}
return(y);
}
后面就不用写了。。