求助!一道编程计算题--数学决定编程的上限!
原题如下:考虑两个无线序列:
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+……
编写一个程序来计算这两个序列不断变化的总和,直到达到某个次数。让用户交互地输入这个次数。
我自己编的程序如下所示:
#include <stdio.h>
int main(void)
{
unsigned n, x, i;
float sum1_n, sum2_n;
while(1)
{
printf("请输入x的值:\n");
i = scanf("%d", &x);
if(i != 1)break;
while(getchar() != '\n');
sum1_n = 0;
sum2_n = 0;
if(x == 1)
{
sum1_n = 1;
sum2_n = 1;
printf("%f %f", sum1_n, sum2_n);
}
if(x == 2 * n)
{
for(n = 1; n <= x; n++)
{
sum2_n += 1 / (n-1) - 1 / n;
sum1_n += 1 / n;
}
printf("%f %f", sum1_n, sum2_n);
}
else
{
for(n = 1; n <= x; n++)
{
sum2_n += 1 / n - 1 / (n - 1) + 1; // Thread1:EXC_ARITHMETIC(code=EXC_I386_DIV,subcode=0x0)[color=#FF0000]
sum1_n += 1 / n;
}
printf("%f %f", sum1_n, sum2_n);
}
return 0;
}
}
结果则如下所示
[local]1[/local]
输入任意结果都是显示错误,上方红字被提示有误,请示大神该如何修改呢?