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;
}
答
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;
}