废话不多说,先上代码和结果截图:
#include<stdio.h>
int main()
{
int i = 0;
int flag = 1;
double count = 0;
for(i=1; i<=100; ++i)
{
count += flag*1.0/i;
flag = -flag;
}
printf("%f",count);
return 0;
}
这里具体分析一下代码:
#include<stdio.h>
int main()
{
int i = 0;
int flag = 1;
double count = 0;
for(i=1; i<=100; ++i)
{
count += flag*1.0/i;
flag = -flag;
}
printf("%f",count);
return 0;
}
这段代码主要有三处需要注意一下:
1. flag flag在这的作用就是改变符号,仔细看一下很好理解,这里不过多解释
2. double count的类型定义为double,因为上面计算是分数,肯定不能是整形,当count为整形时其他分数得到的结果都是0, 所以最终得到的count只有最开始加的1,结果恒为1 ;如果用单精度浮点类型float你会发现有一个警告;所以此处 count的类型定义为double
3. 1.0 我们看这句代码count += flag*1.0/i;
这里为什么用到1.0而不是1呢?因为count是浮点类型的,如果用1的话这里 1/i 就会是整数,下取整为0;那么当用 到1.0时,1.0/i 将得出浮点类型的数
相信你看完这三处关键点,很容易可以看懂此代码了,如有任何问题还希望评论指导