题目:考虑下面两个无限序列:
1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 + …
1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 + …
编写一个程序计算这两个无限序列的总和, 直到到达某次数。 提示: 奇数个-1 相乘得-1, 偶数个-1相乘得1。 让用户交互地输入指定的次数, 当用户输入0或负值时结束输入。 查看运行100项、 1000项、 10000项后的总和,是否发现每个序列都收敛于某值?
#include<stdio.h>
int main()
{
int count;
int sign = -1.0; //负号运算
double sum1,sum2;
printf("Please enter the specified number of times to calculate:");
while(scanf("%d",&count)==1)
{
sum1=sum2=0; //重新赋0,否则sum值叠加上一迭代的sum值
for(float i = 1.0; i <= count; i++)//=1.0时,count=0、1时sum值计算正确
{
sum1 += 1.0/i; //i赋值为1.0,可将count=0的初始sum值0输出
sum2 += sign *(1.0/i);
sign = -sign;
}
printf("sum1 = %lf\n",sum1);
printf("sum2 = %lf",sum2);
printf("\nPlease enter again:");
}
printf("Enter error or bye!");
return 0;
}
运行结果:以0、1、2、3、100、1000、1000、b为例
备注:自己写的,也可能有问题,大家一起交流呀