| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 687 人关注过本帖
标题:很简单的题。但我不会。。。
只看楼主 加入收藏
ly913
Rank: 1
等 级:新手上路
帖 子:17
专家分:5
注 册:2010-5-31
结帖率:71.43%
收藏
已结贴  问题点数:5 回复次数:6 
很简单的题。但我不会。。。
已知:Sn=2/1+3/2+4/3+…+(n+1)/n, 求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)
搜索更多相关主题的帖子: 小数点 最大值 
2010-06-23 15:45
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:1 
#include <stdio.h>
void main()
{
    float f(int n);
    int m;
    printf("请输入N的值:");
    scanf("%d",&m);
    printf("%.3f",f(m));
}
float f(int m)
{
    float sum=0;
    int i;
    for(i=1;i<=m;i++)
    sum+=(float)(i+1.0)/i;
    return sum;
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-23 16:08
wing049
Rank: 2
等 级:论坛游民
帖 子:9
专家分:19
注 册:2010-6-23
收藏
得分:1 
楼上的你题目看反了
我不知道四舍五入怎么弄
啧啧  真是个问题

#include <stdio.h>
void main()
{
   
 
    float sum=0;   
    int i;

    for(i=1;sum>=50;i++)
    sum+=(float)(i+1.0)/i;


    printf("Sn=2/1+3/2+4/3+…+(n+1)\n");
    printf("Sn不超过50的最大值为%d",i-1);
   

}
2010-06-23 17:18
beyond_one
Rank: 4
等 级:业余侠客
帖 子:61
专家分:206
注 册:2009-6-26
收藏
得分:2 
#include <stdio.h>

main()
{
    float n=1,sn=0,sum=0;
    while(sum<50)
    {
        sn=sum; /*保存上次结果*/
        sum+=(n+1)/n;
        n++;
    }
    printf("sn=%.3f,n=%.1f",sn,n);
    getch();
}

运行结果:sn=49.375,n=47
2010-06-23 17:21
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
收藏
得分:1 
接着上面的说说,你将sn强制转换为int型,系统自动将你的四舍五入了吧!
#include <stdio.h>

main()
{
    float n=1,sn=0,sum=0;
    while(sum<50)
    {
        sn=(int)sum; /*保存上次结果*/
        sum+=(n+1)/n;
        n++;
    }
    printf("sn=%.3f,n=%.1f",sn,n);
    getch();
}
运行结果sn=49.000,n=47
2010-06-23 22:42
ly913
Rank: 1
等 级:新手上路
帖 子:17
专家分:5
注 册:2010-5-31
收藏
得分:0 
回复 4楼 beyond_one
答案是对的,但是把n++以及后面的输出n去掉 答案就变成49.000了?好奇怪。
#include <stdio.h>

main()
{
    float n=1,sn=0,sum=0;
    while(sum<50)
    {
        sn=sum; /*保存上次结果*/
        sum+=(n+1)/n;
    }
    printf("sn=%.3f",sn);
    getch();
}
2010-06-23 23:40
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:0 
回复 楼主 ly913
给楼上的加上四舍五入了:

#include <stdio.h>

main()
{
    float n=1,sn=0,sum=0;
    while(sum<50)
    {
        sn=sum; /*保存上次结果*/
        sum+=(n+1)/n;
        n++;
    }
    printf("sn=%.4f\nn=%.1f",(sn*1000+5)/1000,n);
    getch();
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-24 11:41
快速回复:很简单的题。但我不会。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024150 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved