| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:程序那里出错了?
只看楼主 加入收藏
comeon
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2005-11-21
收藏
 问题点数:0 回复次数:6 
程序那里出错了?
求1-1/2+1/3-1/4.....+1/99-1/100的程序
我的写法是:
main()
{
int i;
float s=1.0;
for (i=2;i<=100;i++)
{
if (i%2==0)
s+=1/i;
else s+=-1/i;
}printf ("s=%f",s);
}
在win-tc下编译成功,但是结果是 s=1.000000,错在哪里了呢?请指教!
2005-12-02 08:21
原汁原味
Rank: 1
来 自:湖南省永州市
等 级:新手上路
帖 子:62
专家分:0
注 册:2005-11-17
收藏
得分:0 
#include<stdio.h>
void main()
{
int i;
float s=0.0,n=-1.0;
for (i=1;i<=100;i++)
{n*=-1;
s+=n/i;
}
printf("s=%f\n",s);
}
在win-vc++下编译,试试

我们不能控制 时间的前进, 但我们可以掌握时间的运用!
2005-12-02 11:23
wenyong
Rank: 1
等 级:新手上路
帖 子:251
专家分:0
注 册:2005-8-9
收藏
得分:0 
main()
{
int i;
float s=1.0;
for (i=2;i<=100;i++)
{
if (i%2==0)
s+=-1/i;
else
s+=1/i;
}
printf ("s=%f",s);
}

[此贴子已经被作者于2005-12-2 12:37:36编辑过]


2005-12-02 12:36
kocc120936
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-11-22
收藏
得分:0 
1/i(i&gt;=2)的结果是零,改成1.0/i试试.楼主程序的逻辑也有点错误,仔细点应该可以自己发现.
2005-12-02 16:34
wty1110
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2005-12-2
收藏
得分:0 

我不知道你错在哪里。不过我自己是这样写的
void main()
{
float a,b,c;
for(a=1;a<=100;a=a+2)
{
b=1/a-1/(a+1);
c+=b;
}
printf("%5.3f",c);
}
算的答案是0.688
我想你可能是I要把它定义成FLOAT试一下呐

2005-12-02 21:54
落花吹雪
Rank: 1
等 级:新手上路
帖 子:27
专家分:0
注 册:2005-11-20
收藏
得分:0 

1/n 结果是是隐含强制转换成整型数 所以为0 所以循环每一步都是S=S+0 也就是
1=1+0 结果没变化 最后浮点格式输出 结果为1 小数点后为6位精度

2005-12-03 15:50
东门飘雨
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-12-3
收藏
得分:0 
5楼的 b=1/a-1/(a+1);是什么意思。是表示b=1/((a-1)*(a+1))还是b=(a+1)/(a-1).
2005-12-04 22:48
快速回复:程序那里出错了?
数据加载中...
 
   



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

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