首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-03 
级数求和 HELP ME一道题 我很郁闷问题描述已知:Sn1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时

级数求和 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类型就可以了.

热点排行