752096996 发表于 2013-7-21 16:05:43

希望大家帮我看看,求围观,

#include<math.h>
#include<stdio.h>
void main()
{
int i;
   double sum,y;
sum=0;
for(i=1;i<=100;)
{      
            y=1/i;
   if(i%2==0)
      
    sum=sum-y;
else
   sum=sum+y;
i++;
}

      printf("%lf\n",sum);
}
我看了好久了,运行出来都是1希望大家帮我看看了

仰望天上的光 发表于 2013-7-21 16:16:31

y=1/i;
改为
y=1.0/i;

刀下留人 发表于 2013-7-22 17:53:59

这跟1和1。0有什么关系?

流年肆意 发表于 2013-7-22 21:09:34

给你分析一下:
i 为整型,1也是,1/i 的结果还是整型。
i = 1            y = 1/i = 1/1 = 1
i = 2            y = 1/i = 1/2 = 0
i = 3            y = 1/i = 1/3 = 0
         …………
所以 sum 最后等于 1

CL0419 发表于 2013-7-23 12:05:15

同意楼上的见解……

牡丹花下死做鬼 发表于 2013-8-10 15:32:46

就一个小问题
1/i 是整形的 整形的话会去掉小数部分所以
i = 1y = 1/1 = 1
i = 2y = 1 / 2 = 0.5 错应为是整形 所以会把小数点后的全部去掉就是0
i = 3 ......
所以sum = 1 + 0 + 0 + 0 +...... = 1
申请最佳啊

阔怀 发表于 2015-8-23 10:14:41

{:1_1:}
页: [1]
查看完整版本: 希望大家帮我看看,求围观,