读书人

级数求和 HELP ME 一道题 小弟我很郁

发布时间: 2012-04-03 12:38:19 作者: rapoo

级数求和 HELP ME 一道题 我很郁闷
问题描述


已知: Sn= 1 + 1 / 2 + 1 / 3 +…+ 1 / n 。显然对于任意一个整数 K ,当 n 足够大的时候, Sn 大于 K 。

现给出一个整数 K ( 1 <=k <=15 ),要求计算出一个最小的 n ;使得 Sn > K 。

【输入格式】

输入文件只有一行:即一个自然数k(1≤k≤15)。

【输出格式】

输出文件也只有一行:即所求的最小的n。

【输入输出样例】

输入文件名: sum.in

1

输出文件名: sum.out

2


我的代码是:
#include "stdio.h "

int main()
{
int n=1,k;
int sn=0;

FILE *openPtr;
FILE *writePtr;

openPtr=fopen( "sum.in ", "r ");

fscanf(openPtr, "%d ",&k);

while(sn <=k){
sn+=(1/n);

n++;
}

writePtr=fopen( "sum.out ", "w ");

fprintf(writePtr, "%d ",n);

fclose(openPtr);
fclose(writePtr);

return 0;
}


哪里出错了啊?

[解决办法]
注意你下面的代码:
while(sn <=k){
sn+=(1/n);

n++;
}
这里n是整数,所以1/n按整数除法,得0,所以是死循环.
把n改成double类型就可以了.

读书人网 >C语言

热点推荐