您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 辅导 >> 正文    
  C趣味程序(二)(05)调和级数不等式 【注册男护士专用博客】          

C趣味程序(二)(05)调和级数不等式

www.nanhushi.com     佚名   不详 

1.6.2 调和级数不等式
    12<1+1/2+1/3+...+1/m<13
    试求满足上述不等式的整数m。
本题算法如下:
    为一般设计,设和s的整数部分为n,设置i循环,可预置1000000次。求和s=s+1/i过程中若出现s>n,此时c=i为区间的下限。若出现s>n+1,此时d=i-1为所求区间的上限,然后退出循环。
    设计时务必注意,出现s>n且赋值c=i之后的继续求和过程中,条件s>n始终成立,于是由初值c=i确定的下限c也随之改变。为防止确定了下限c后再发生改变,引入中间变量s0,s0赋初值n+1,把判别条件改为(s>n and s<s0)。出现s>n(自然会有s<s0)时,作赋值c=i的同时通过s0=s改变了s0,随后继续求和,s增加时,致使条件(s>n and s<s0)不再成立,确保已定下限c不再改变。
程序代码如下:
#include<stdio.h>
void main()
{
    float s,s0,c=0,d=0,i;
    int n;
    printf("求n<1+1/2+1/3+...+1/m<n+1的整数m\n请输入n:");
    scanf("%ld",&n);
    s=0;
    s0=(float)n+1;
    for(i=1;i<=1000000;i=i+1)
    {
        s=s+(float)1/i;
        if(s>n&&s<s0){c=i; s0=s;}
        if(s>n+1){ d=i-1;break;}
    }
    printf("满足不等式的m为: %.f < m < %.f\n",c,d);
}
程序运行结果如下:

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目