** 这是题目要求:
** /*考虑下面两个无限序列:
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
#include
int main()
{
int i;
int num=0;
double sum1=0.0;
double sum2=0.0;
printf("Please enter the value of the specified number of items:");
while(scanf_s("%d",&num)==1)
{
getchar();
for(i=1;i<=num;i++)
{
sum1+=(1.0/i);
sum2+=pow (-1.0,i-1)*(1.0/i);
}
printf("1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 + ...=%lf\n",sum1 );
printf("1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 + ...=%lf\n",sum2 );
printf("Please enter the value of the specified number of items:");
}
getchar();
getchar();
return 0;
}
这是编译结果:
编译结果是错误的。但是我完全不知道原因,诶。
如果不麻烦的话,希望有人能够给我解答一下,自学感觉有点困难。
https://blog.csdn.net/q20110318/article/details/6260419?locationNum=1
我也是新手,刚看自学到这里,感觉你这第一次计算是对了。后面错了是因为,打印完两个数值以后,应该重置sum1 sum2的数值,否则下次计算会和前面的叠加在一起。
可以解释一下“while(scanf_s("%d",&num)==1)”的意思吗?是指当输入的num==1时才不循环?