C语言,麻烦哪位高手帮我看看哪出了问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 12:27:06
#include<stdio.h>
#include<math.h>
float sum(int n)
{
int t,i,m;
float s=0.0;
for(m=1;m<=n;m++)
{
t=1;
for(i=1;i<=m;i++)
t*=i;
s=s+1/t;
}
return s;
}

main()
{
int n;
float s;
printf("请输入n的值:");
scanf("&d\n",&n);
s=sum(n);
printf("%f\n",s);
}
为什么结果总是0啊?
下面的问题改过来了,但是它为什么不计算函数啊

错误有二:
其一,在主函数中的scanf函数中有错误,1.不应该是&d而是%d,2.不应该在scanf()中使用\n,应该将其去掉。
其二,在sum()函数中有错误,因为t为int型变量,所以1/t得到的是整形值,程序中t>=1所以 1/t=1 或者1/t=0,应该将"s=s+1/t;"改为"s=s+1.0/t;"

修改后的程序如下:

//////////////////////////////////////

#include<stdio.h>
#include<math.h>
float sum(int n)
{
int t,i,m;
float s=0.0;
for(m=1;m<=n;m++)
{
t=1;
for(i=1;i<=m;i++)
t*=i;
s=s+1.0/t;
}
return s;
}

main()
{
int n;
float s;
printf("请输入n的值:");
scanf("&d",&n);
s=sum(n);
printf("%f\n",s);
}

int t,i,m;
s=s+1/t;
因为t使整形1/t<0 故而1/t=0
s=s+0=>s=s=0.0

s=s+1/t改为s=s+1.0/t;
scanf("&f\n", &n)改为scanf("%f", &n);

scanf("&d\n",&n);
scanf("%d\n",&n);

s=s+1/t;
s=s+(