当前位置: 代码迷 >> C语言 >> [求助]请看看;谢谢;
  详细解决方案

[求助]请看看;谢谢;

热度:110   发布时间:2005-04-07 17:11:00.0
[求助]请看看;谢谢;

#include"stdio.h"

main()

{ int i;

float sum;

for(i=1,sum=0;i<=20;i++)

{sum+=(float)(i)/(++i);}

printf("%d",sum);

}这个是求1/2 2/3 3/4 。。。。。的和的题。 请问错在哪 啊??? 谢谢了


----------------解决方案--------------------------------------------------------
最后结果也是单精度数,所以不应该使用 %d 来输出 sum 的;

----------------解决方案--------------------------------------------------------

for(i=1,sum=0;i<=20;i++)

{sum+=(float)(i)/(++i);} 上面所写的程序是不能实现题目要求的结果的; 原因在于 i++ 和 ++i; i已经在循环体中加1,但是循环中同时也将i做为循环步长,也就是说,每循环一次,i事实上是被加了2。 因此,上面的程序事实上就是实现如下的式子: 1/2+3/4+5/6+7/8+9/10+11/12+13/14+15/16+17/18+19/20 您可以使用下面的程序来验证一下是否真的如此: for(i=1,sum=0;i<=20;i++) { printf("%d",i); sum+=(float)(i)/(++i); printf("/%d\n",i); }


----------------解决方案--------------------------------------------------------

//程序可以修改如下: //看看把 //~~~ #include <stdio.h>

//这个是求1/2 2/3 3/4 。。。。。的和的题 void main() { int i; float div; float sum; for(i=1,sum=0;i<=2;i++) { div = i+1 ; sum += i/div; } printf("%f\n",sum); }


----------------解决方案--------------------------------------------------------

#include"stdio.h"

main()

{ int i;

float sum;

for(i=1,sum=0;i<=20;i++) { printf("i=%d\n",i); sum+=(float)i/(i+1);} //只要改这就行了。

printf("%f",sum); getch(); }


----------------解决方案--------------------------------------------------------
谢谢 各位的帮助啊,,,,,,
----------------解决方案--------------------------------------------------------
  相关解决方案