c语言,求1+1/3+1*2/3*5+。。,输出的值一样

#include<stdio.h>
int s(int n)
{
float i,j,s=0,x=1.0,y=1.0;
for(i=1;i<n;i++)
{
x=xi;
y=y
(2*i-1);
s=s+x/y;
}

输入4
应输出:1.5492063492
实际输出:2.000000
输入25
应输出:1.5707963218
实际输出:2.000000

return s;

}
int main(void)
{
int n;
double a;
scanf("%d",&n);
a=s(n);
printf("%lf",a);
return 0;
}


#include<stdio.h>
double s(int n)
{
double i,j,s=1.0,x=1.0,y=1.0;
for(i=1;i<=n;i++)
{
x=x*i;
y=y*(2*i+1);
s=s+x/y;
}
return s;
}
int main(void)
{
int n;
double a;
scanf("%d",&n);
a=s(n);
printf("%.10lf",a);
return 0;
}
#include<stdio.h>
double fun(int n)
{ 
    double s, t; int i;
    s=1.0; t=1.0;
    for(i=1;i<=n;i++)//这里应该是i++
    { 
        t=t*i/(2*i+1);
        s+=t;
    }
    return s;
}
 
int main(int argc, char *argv[])
{
    int n;
    scanf("%d",&n);
    printf("\n %12.10lf", fun(n));
    return 0;
}