C Prime Plus的第六版第六章第十二题怎么做?

** 这是题目要求:
** /*考虑下面两个无限序列:
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时才不循环?