| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 433 人关注过本帖
标题:为什么是5.5呢
只看楼主 加入收藏
小试牛刀1989
Rank: 1
来 自:中国南宁
等 级:新手上路
帖 子:26
专家分:0
注 册:2010-3-12
结帖率:90.91%
收藏
已结贴  问题点数:5 回复次数:4 
为什么是5.5呢
有以下程序:
  #include  <stdio.h>                  本题结果为何是5.500000,求详解,给五分
     double f(int n)                       
{int i;  double s;
  s=1.0;
  for(i=1;i<=n;i++) s+=1.0/i;
  return s;
}
  main()
  {int i.m=3;
    double a=0.0;
    for(i=0;i<m;i++) a+=f(i);
    printf("%f\n",a);
   }
2010-07-25 00:33
vs_inzaghi
Rank: 5Rank: 5
来 自:湖北
等 级:职业侠客
威 望:1
帖 子:303
专家分:364
注 册:2009-8-17
收藏
得分:2 
i=0时,a+=f(0);
f(0)=1.0,所以a=1.0;
i=1时,a+=f(1);
f(1)=2.0,所以a=1.0+2.0=3.0;
i=2时,a+=f(2);
f(2)=2.5,所以a=3.0+2.5=5.5;
i=3时,不满足i<m的条件,退出for循环……
……
LZ拿个笔算算就出来了,没想到还有比我更懒的人……

我很懒,但我讨厌别人说我懒……
2010-07-25 02:08
小试牛刀1989
Rank: 1
来 自:中国南宁
等 级:新手上路
帖 子:26
专家分:0
注 册:2010-3-12
收藏
得分:0 
原来f(2)=2.5啊,我还以为s的值一直为1呢,我仔细琢磨了一下,再循环时s的值是上一次循环的值,终于知道为什么会是2.5啦,谢谢!
2010-07-25 09:23
sunyh1999
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:14
帖 子:1178
专家分:3032
注 册:2009-5-17
收藏
得分:2 
再补充一下还有一个问题是关于格式输出的:
#include  <stdio.h>                  本题结果为何是5.500000,求详解,给五分
double f(int n)                       
{int i;  double s;
  s=1.0;
  for(i=1;i<=n;i++) s+=1.0/i;
  return s;
}
  main()
  {int i.m=3;
    double a=0.0;
    for(i=0;i<m;i++) a+=f(i);
    printf("%f\n",a);//应为是double型的数据,所以要用%lf输出
   }


欢迎来到我的博客:http://blog..cn/noisunyuhong
2010-07-28 10:09
快速回复:为什么是5.5呢
数据加载中...
 
   



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

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