7-32 求交错序列前N项和 (15 分)
本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+… 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,结果保留三位小数。
输入样例:
5
输出样例:
0.917
参考代码:
#include<stdio.h>
#include<math.h>
int main(){
int n;
double sum=0;
scanf("%d",&n);
for(double i=1;i<=n;i++){
sum+=i/(2*i-1)*pow(-1,i+1);
}
printf("%.3f",sum);
return 0;
}
来源:https://zhuanlan.zhihu.com/p/93338713
我的代码:
#include <stdio.h>
int main(){
int n;
double sum1=0;
double sum2=1;
scanf("%d",&n);
if (n>0){
int count=0;
double a=0;
if (n==1)
printf("%.3f",n);
else {
for(double i=2;i<n+1;i++){
count++;
switch (count){
case 1:
sum1=sum2-(i-a);
a++;
break;
case 2:
sum2=sum2-(i-a)/i;
break;
case 3:
sum1=sum2+(i-a);
a++;
break;
case 4:
sum2=sum2+(i-a)/i;
count=0;
break;
}
}
if (n%2==0)
printf("%.3f\n",sum1);
else
printf("%.3f\n",sum2);
}
}
return 0;
}
两个结果不一样。
输入:5
输出:
参考输出:0.917
我的输出:0.933
用计算器计算:1-2/3+3/5=0.933
输入:3
输出:
参考输出:0.933
我的输出:0.333
用计算器计算:1-2/3=0.333
然后我发现我的N=5输出和参考N=3输出一致!
原来是因为对第5项理解不一样。
我是:1;2;3;3;5
参考是:1;2/3;3/5;4/7;5/9
·
·
·
·
·
·
我的N=9输出和参考N=5输出一致。
弄明白了,气死。(▼︹▼#)