1+3/2+…+(2n-1)/n! 求用c语言解答一下,答案算的好奇怪

1+3/2+…+(2n-1)/n! 求用c语言解答一下,答案算的好奇怪

问题描述:

#include<stdio.h>
int main()
{
int i=1;
int ret=1;
int sum=0;
int n=1;
printf("Please input n:");
scanf("%d\n",&n);
for(i=1;i<=n;i++)
{
ret*=i;
sum+=(2*i-1)/ret;
}
printf("sum=%f\n",sum);
return 0;
}


#include<stdio.h>
int main()
{
int i=1;
int ret=1;
float sum=0;
int n=1;
printf("Please input n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
ret*=i;
sum+=(2.0*i-1.0)/ret;
}
printf("sum=%f\n",sum);
return 0;
}

img


img

double sum = 0; --sum应该定义为浮点数
sum += (2*i-1.0)/ret; --i,ret都是整型, 整数相除是整除。1改为1.0后,就不是整除了
printf("sum=%lf\n",sum);

int sum=0; 改成double sum = 0;
sum+=(2*i-1)/ret; 改成 sum+=(double)(2*i-1)/ret;
完整代码如下:

#include<stdio.h>
int main()
{
    int i=1;
    int ret=1;
    double sum=0;  //修改1
    int n=1;
    printf("Please input n:");
    scanf("%d",&n); //修改3,%d后面的\n去掉,否则需要多输入一次回车
    for(i=1;i<=n;i++)
    {
        ret*=i;
        sum+=(double)(2*i-1)/ret;  //修改2
    }
    printf("sum=%f\n",sum);
    return 0;
}