C语言计算序列 1 + 1/3 + 1/5 + ... 的前N项之和?答案精确小数点后六位

代码一#include<stdio.h>intmain(){intN;scanf("%d",&N);inti;doublesum=0;for(i=1;i<=N;i=i+2... 代码一
#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
int i;
double sum = 0;
for(i=1;i<=N;i=i+2)
{
sum = sum + 1.0/i;
}
printf("sum = %.6f",sum);
return 0;
}
代码二
#include<stdio.h>
int main()
{
int N;
scanf("%d",&N);
int i;
double sum = 0;
for(i=1;i<=N;i++)
{
sum = sum + 1.0/(2*i-1);
}
printf("sum = %.6f",sum);
return 0;
}

带入N=23,答案是sum = 2.549541

代码一与代码二区别在于2*I-1和I=I+2有什么区别
计算结果不一样 代码一代入23,答案是2.224353
代码二是对的,2.549541,请问2*I-1和I=I+2有什么区别
展开
 我来答
职场达人涂涂
2019-10-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>int main(){ int n,i; //double sum;//sum没有初始化 double sum=0.0;//求和,置sum为0 //printf("请输入数字n:",n);//这句逗号后面的n是多余的,不参与输出 printf("请输入数字n:"); scanf("%d",&n); for(i=1;i<=n;i++) { if(i%2==0) //sum=sum-1/(3*i-2);//1/(3*i-2),由于参与运算的全是整型,算出结果也将是整型,应当加入浮点型 sum=sum-1.0/(3*i-2); else //sum=sum+1/(3^i-2);//这里一个错误同上,一个错误是把*写成了^,天壤之别哦 sum=sum+1.0/(3*i-2); } //printf("sun=%.3f",&sum);//加&取地址,这样输出的是sum的地址值 printf("sum=%0.3f\n",sum); return 0;}
microroom
2019-10-10
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
循环次数不同。比如,当N=7时,代码1当i为1,3,5,7时执行循环,加的是1+1/3+1/5+1/7。而代码2,当i为1,2,3,...,6,7时循环,加的是1+1/3+1/5+1/7+1/9+1/11+1/13。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式