方法一:利用i转化为二进制的值和0x1的值进行相与来进行奇偶性判断
#include<stdio.h>
int main()
{
int n;
double result = 0;//
printf("请输入n的值:\n");
scanf("%d",&n);
for(int i = 1;i<=n;i++)
{
if(i & 0x1 == 0)//奇偶性判断i的取值转化为二进制和二进制的1相与,如果为0符号就为减。
{
result = result - 1.0 / i;
}
else//如果不为零符号就为+
{
result = result + 1.0 / i;
}
}
printf("result的值为:%f\n",result-1);//将最终结果输出
}
如图我输入n=2:
输出完成
1-1/2为0.5 结果正确。
方法二:定义一个flag标签,用每次循环的结果除以flag进行奇偶性判断:
#include<stdio.h>
int main()
{
int i;
int n;
int flag = 1;//定义flag标签
double result = 0;
scanf("%d",&n);
for(i=1;i<=n;i++){
result += 1.0 / i*flag;
flag *= -1 ;//每一次flag乘-1,值的符号就会改变,进行奇偶性判断。
}
printf("%f\n",result);
}
如图,我输入n的值为2
输出完成
输出结果为0.645635,结果正确。
利用函数封装后的程序为:
//求1-1/2+1/3-1/4+1/5-……1/n的结果
#include<stdio.h>
float getsum(int n)
{
int flag = 1;
double result = 0;
for(int i = 1;i<=n;i++){
result += 1.0 / (i*flag);
flag *= -1;
}
return result;
}
int main()
{
int n = 0;
scanf("%d",&n);
printf("%f\n",getsum(n));
return 0;
}
如图我输入值3:
输出完成