求教C高手一道题

jasmine 2011-04-08 08:44:35
求1-1/3+1/5-1/7...直到最后项的绝对值<10的-5次方


求教这道题如何进行编程
...全文
197 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
jasmine 2011-04-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 outmanlee 的回复:]
个人空间

帐号:ladyf
昵称:该用户很懒,没有设置昵称
最新帖子:

C高手请进
求教C高手一道题
C高手的请进
更多帖子...
LZ还不结贴?
[/Quote]
请问你有么事
jasmine 2011-04-21
  • 打赏
  • 举报
回复
#include <stdio.h>
main( )
{
int flag=1,tt=1;
double s=0,t=1.0;
while(fabs(t)>1E-5){
s=s+t;
flag=-flag;
tt+=2;
t=1.0/tt*flag;
}
printf("s=%lf\n",s);
system("pause");
}
我也写了一段程序
但是就是输出老是为0
想知道下问么子
svtanto 2011-04-15
  • 打赏
  • 举报
回复
我写个短的例子给你参考,浮点数的比较是用差和一个很小的值做比较。

#include <stdio.h>

int
main(
const int argc,
const char *argv[]
)
{
double dEnd = 0.01;
double sum = 0.0;
double value;
int idx = 1;
while (1) {
value = 1.0 / idx;
printf("1/%d", idx);
if (value - dEnd < 0.00000000001) {
break;
}
printf("%c", (idx % 3 == 0 ? '+' : '-'));
sum += value * (idx % 2 == 0 ? -1 : 1);
idx += 2;
}
printf("=%f\n", sum);

return 0;
}
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

int main( )
{
int flag;
double sum=0.0;
double n=1;
int num=0;
while(1/n>0.00001)
{
num++;
flag = num%2;
if (flag==0)
{
sum -= 1/n;
}
else
{
sum += 1/n;
}
n += 2;
}
printf("\n%f\n", sum);
return 1;
}




赵4老师 2011-04-15
  • 打赏
  • 举报
回复
printf("计算结果为: %.15lg\n" , sum ) ;
_小青年儿_ 2011-04-15
  • 打赏
  • 举报
回复

个人空间

帐号:ladyf
昵称:该用户很懒,没有设置昵称
最新帖子:

C高手请进
求教C高手一道题
C高手的请进
更多帖子...
LZ还不结贴?
jasmine 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wadeyz 的回复:]
C/C++ code

#include <stdio.h>
#include <math.h>

void main()
{
// C语言求1-1/3+1/5-1/7...直到最后项的绝对值<10的-5次方
double dResult = 0.0;
long dDeno = 1;
int i = 0;
int tag = 1;
……
[/Quote]
想问你一下
你的vc是用的哪个版本的
我的是win7 vc用不好
你晓得有么子可以代替的没
vs是不是可以替代
丹青眀审 2011-04-08
  • 打赏
  • 举报
回复
void main(){
double s=1 , n;
int r=2;
for(n=3;1/n>=0.00001;){
s=s+((-1)^r)/n;
n+=2;
r++;
}
printf(n) ;
}
「已注销」 2011-04-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 witwolf 的回复:]

double sum=0.0;
double n=1;
while(1/n>0.00001){
sum+=1/n;
n=n%2==0?-n+2:-n-2;
}
[/Quote]

%只能用于整数
你的n值计算不正确
  • 打赏
  • 举报
回复
/*求1-1/3+1/5-1/7...直到最后项的绝对值<10的-5次方


求教这道题如何进行编程*/

#include < iostream >
#include < math.h >
#include < iomanip >
#define eps exp(-5)
using namespace std ;

void main()
{
int n = 1 ;
float sign = 1 ;
float term = 1 ;
double sum = 0 ;

while( fabs(term) >= eps )
{

term = sign / n ; //求项
sum += term ; //求和
n++ ; //分母增加
sign = - sign ; //改变符号

}
cout.setf(ios::fixed | ios::showpoint ) ;
cout << "计算结果为:"
<< setprecision(2)
<< sum
<< endl ;
cout << "到第" << n - 1
<< "项结束!"
<< endl ;
system("pause");
}
「已注销」 2011-04-08
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <math.h>

void main()
{
// C语言求1-1/3+1/5-1/7...直到最后项的绝对值<10的-5次方
double dResult = 0.0;
long dDeno = 1;
int i = 0;
int tag = 1;
double dValueN = 0.0;

do
{
dValueN = 1.0 / dDeno;
dResult += tag *dValueN;
dDeno += 2;
tag = -tag;
}while(!(fabs(dValueN) < 10e-5));

printf("1-1/3+1/5-1/7... = %lf\n", dResult);

}
  • 打赏
  • 举报
回复

#include < stdio.h >

#include < math.h >

#define EPS exp(-5)

void main()
{
double sign = 1 ;

double sum = 0 ;

double term = 1 ;

int n = 1 ;

do
{
term = sign / n ;
sum += term ;
n++ ;
sign = - sign ;

}while( fabs(term) >= EPS );

printf("计算结果为: %.2f\n" , sum ) ;
printf("最后一项是第%ld项",n-1);


}
witwolf 2011-04-08
  • 打赏
  • 举报
回复
1/n改成abs(1/n)
witwolf 2011-04-08
  • 打赏
  • 举报
回复
double sum=0.0;
double n=1;
while(1/n>0.00001){
sum+=1/n;
n=n%2==0?-n+2:-n-2;
}
king__xy 2011-04-08
  • 打赏
  • 举报
回复
可以用数列吗?如果可以的话就简单多了

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧