| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 501 人关注过本帖
标题:请教大家,好奇怪的问题
只看楼主 加入收藏
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
请教大家,好奇怪的问题
大家好,我是新手,才学C没多少天,现在有个奇怪的问题,不知道错在哪里,请教大家给我指点指点。
题目是求1-1/2+1/3-1/4...+1/99-1/100
main()
{
int sigh=1;
float deno=2.0,sum=1.0,term;
while(deno<=100)
{
 sigh=-sigh;
 term=sigh/deno;
 sum=sum+term;
 deno=deno+1;
}
printf("sum is %f",sum);
getch();
}

以上是标准答案,结果是0.688172

main()
{
int sigh=1;
float deno=2.0,sum=1.0,term;
for(deno=2.0;deno<=100;deno++)
    sigh=-sigh;
    term=sigh/deno;
    sum=sum+term;
printf("sum is %f",sum);
getch();
}
以上是我改写的,用for语句替换,结果就变成了0.990099.我实在不明白啊,错在哪里了?
2010-04-12 20:35
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
求各位前辈赐教啊,我十分喜欢C,喜欢那种编译成功的感觉。。。
2010-04-12 20:37
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
语句块的概念
2010-04-12 20:44
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
以下是引用hahayezhe在2010-4-12 20:44:36的发言:

 语句块的概念
能告诉我具体我错哪了吗?谢谢啦
2010-04-12 20:45
新用户1
Rank: 2
等 级:论坛游民
帖 子:2
专家分:14
注 册:2010-4-12
收藏
得分:0 
坐等结果。。。我也觉得没有错误啊···
2010-04-12 20:47
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:20 
你少了个语句块 { }
 必须用这个大括号 控制for循环的范围

要不for循环以 ; 分号结束
2010-04-12 21:00
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
以下是引用hahayezhe在2010-4-12 21:00:26的发言:

你少了个语句块 { }
 必须用这个大括号 控制for循环的范围

要不for循环以 ; 分号结束
谢谢你,确实加了{}后,就对了,但还是比较疑惑,因为看书中别的例题似乎没用{}来将for循环控制的,但还是很感谢你,这也为以后学习提了个醒,有了个注意点!
2010-04-12 21:06
andyzt406
Rank: 2
等 级:论坛游民
帖 子:43
专家分:37
注 册:2009-11-24
收藏
得分:0 
#include "iostream.h"
int main()
{
    float k=1.0;
    float s=0.0;
    for(int i=1;i<=100;i++)
    {
        s+=k/i;
        k=(-1)*k;
    }
    cout<<s;
}
2010-04-12 21:19
itmen
Rank: 1
等 级:新手上路
帖 子:15
专家分:6
注 册:2010-4-1
收藏
得分:0 
#include <stdio.h>
main()
{
  int i;
  float s;
  for (i=1;i<=100;i++)
    if (i%2==0)
     s-=1/i;
    else
     s+=1/i;
  printf("s=%d",s);
  getche();
}
===============
没测试过。。不过应该是这样。。
2010-04-13 18:12
快速回复:请教大家,好奇怪的问题
数据加载中...
 
   



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

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