目录
题目:计算 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - … + 1/99 - 1/100 的值,并打印出结果,(注:除法分为整数除法和
浮点数除法,要计算出⼩数,得采⽤浮点数除法,浮点数除法的操作数中⾄少要保证有⼀个浮点
数。)
先给代码,解析在下面奥!!!(有两种方法)
#include <stdio.h>
//方法1
int main()
{
int i = 0;
double sum = 0;
//遍历1~100
for (i = 1; i <= 100; i++)
{
//判断当前数是奇数或偶数
if (i % 2 == 1)
//i为奇数,将sum加上1/i的值
sum += 1.0 / i;
else
//i为偶数,将sum减去1/i的值
sum -= 1.0 / i;
}
printf("%lf\n", sum);
return 0;
}
//方法二
int main()
{
double sum = 0;
int flag = 1;
double i = 0;
for ( i = 1; i <= 100; i++)
{
sum += (1 / i) * (flag);
flag = -flag;
}
printf("%f ", sum);
return 0;
}
方法一(if语句判断法)
这题很简单,首先你需要一个浮点型的变量来作为整体的和,因为分数的值就是浮点数。
然后利用for循环遍历(将1-100的数字一个个取出)。
如果 i % 2 == 1,就说明 i 时一个奇数,根据题目奇数项前面是正号,所以 sum加上 1.0/sum
如歌 i % 2 == 0,那就是个偶数,根据题目偶数前面是负号,所以sum减去 1.0/sum;
(当然如果没有负号,全是加的话,那就不需要判断一直加即可。)
#include <stdio.h>
int main()
{
int i = 0;
double sum = 0;
//遍历1~100
for (i = 1; i <= 100; i++)
{
//判断当前数是奇数或偶数
if (i % 2 == 1)
//i为奇数,将sum加上1/i的值
sum += 1.0 / i;
else
//i为偶数,将sum减去1/i的值
sum -= 1.0 / i;
}
printf("%lf\n", sum);
return 0;
}
方法二(flag改号法)
方法二需要用到一个单独的变量flag来改变正负号。
和方法一,一样还是需要遍历1-100的数字。第一个数字是正号,所以直接乘上flag。
第二个数字是负号所以在第一次循环末尾,把flag = - flag。这样下一次的flag就是-1 。
int main()
{
double sum = 0;
int flag = 1;
double i = 0;
for ( i = 1; i <= 100; i++)
{
sum += (1 / i) * (flag);
flag = -flag;
}
printf("%f ", sum);
return 0;
}
总结:简单题,只要考虑好 正负号即可。