c语言,请问我这哪里错了,帮我改一下,题目如图,代码如下,谢谢(*°∀°)=3

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
double sum=0;
int n,k;

printf("请输入正整数n:");
scanf("%d",&n);

for(k=1;k<=n;k++){
sum=sum+k/(2*k-1);
}
printf("数列的和:%.20lf\n",sum);
return 0;
}

#include <stdio.h>
int main(){
double sum=0.0;//给个初值,避免出现未知初始值,影响结果
int n,k;

printf("请输入正整数n:");
scanf("%d",&n);

for(k=1;k<=n;k++){
sum+=k*1.0/(2*k-1);//加个1.0相乘,强制转换为浮点数
//避免除法中结果可能被整除吃掉小数的情况发生
}
printf("数列的和:%.20lf\n",sum);
return 0;
}

请输入正整数n:100

数列的和:51.64217109465084832000

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-10-25
sum=sum+(double)k/(2*k-1);
这个除法转成浮点数运算,如果是整数运算,结果一直为0的。
望采纳。。。。。。
第2个回答  2018-10-25
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{
double sum=0;
int n,k;

printf("请输入正整数n:");
scanf("%d",&n);

for(k=1;k<=n;k++){
sum=sum+(double) k/(double)(2*k-1); //int计算默认为int,精度太大,应转换为double
}
printf("数列的和:%.20lf\n",sum);
return 0;
}

相似回答