| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 340 人关注过本帖
标题:请帮我找碴碴:
收藏  订阅  推荐  打印 
lgp311
Rank: 1
等级:新手上路
帖子:13
积分:230
注册:2004-8-29
请帮我找碴碴:

fun的功能是:计算级数的前N项之和,直到下一项大于q, q的值通过形参传入.S=2/1+3/2+4/3/+..+(n+1)/n
若q=50.0,则函数的值为50.4115587
#include <conio.h>
#include <stdio.h>
double  fun( double q )
{ int n; double  s;
  n = 2;
/************found************/
  s = 2.0
  while (s<=q)
  {
/************found************/
    s=s+ (n+1)/n;
    n++;
  }
  printf("n=%d\n",n);
  return s;
}
main ( )
{  clrscr( );
   printf("%f\n", fun(50));
}
2004-9-13 16:10
乌鸦丘比特
Rank: 4
等级:高级会员
威望:2
帖子:625
积分:6500
注册:2004-7-19

问题在于n

你定义为整形,那在进行(n+1)/n运算的运算的饿时候那它会进行整形的运算,当n为偶数时候就会出错了。

把n定义为实型可以解决问题


我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2004-9-13 17:25
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.047518 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved