本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中输出部分和的值,结果保留三位小数。
int main()
{
int N,i,sign=-1;
float sum = 0;
scanf("%d",&N);
for(i = 1;i<=N;i++)
{
sum += (sign*=-1)*((float)i)/((float)(2*i-1));
}
printf("%.3f\n",sum);
}
答案正确为0.917
#include<stdio.h>
#include<math.h>
int main(){
int N,n1,n2;
float da;
n1=1;
da=0.0;
scanf("%d",&N);
n2=N;
while(n1<=n2){
n1=n1+1;
da=da+(n1/(2.0*n1-1.0))*pow(-1.0,n1-1.0);
}
printf("%.3f",da);
return 0;
}
答案错误为0.372
在编程中逻辑不同会造成答案的不同,即使是细微的变化。
同时还要注意数值类型(1.0与1的差别)与赋值情况(输入也算赋值)。