利用C语言计算1/1-1/2+1/3-...-1/100的值

第一种解法:

看到这个计算我们首先会想到关于数学的(-1)^{n}相加的运算。

于是我们可以设置一个参数为flag,让它每进行一次运算的时候就变成  -flag

那既然我们说到了“每次“,我们就可以采用循环来解决这个问题。

通过观察我们发现,这串运算中分子是固定的“1”,只有分母在发生变化,那我们就从设定一个变量为n开始来一起写代码吧!

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;

	return 0;
}

写到这里之后我们就想,是分母1-100的计算,每个都要计算的话,我们可以写一个循环来进行每一次的运算,最后再将他们加起来,那么我们再定义一个参数为sum,表示每次运算后相加所得的数。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	int sum = 0;
	for (n = 1; n <= 100; n++)
		sum = 1 / n + sum;
	return 0;
}

这样就有了一个比较清晰的思路,再结合前面我们说的利用参数flag,在每次计算循环结束后都变为相反数,这样就可以解决我们的问题啦(flag初始化要为1)r

fine _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	double sum = 0.0;
	int flag = 1;
	for (n = 1; n <= 100; n++)
	{ 
		sum = flag*(1.0 / n) +sum;
	    flag = -flag;
	}
	printf("sun=%lf", sum);
	return 0;
}

 因为是分数运算,所以我们将sum设为double浮点型。sum=0.0;

所以在计算的时候我们将1/n写为1.0/n。

第二种解法:

我们发现这个运算是有规律的,当分母为奇数的时候进行的是相加的运算,而分母为偶数的时候进行的是相减的运算。

那我们可以抓住这一点来编写另外的解决方式:

define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	int n = 0;
	double sum = 0;
	for (n = 1; n <= 100; n ++)
		if (n % 2 != 0)
		{
			sum = 1.0 / n + sum;

		}
		else
		{
			sum = -1.0 / n + sum;
		}
	printf("sum=%lf", sum);
	return 0;
}

从代码中我们可以看出我们先用if(n%2!=0)来判断出这个n为奇数还是偶数,然后再进行运算,最后将运算的结果加起来。

两种方法的运算结果都是一致的。

 当然我们也还有其他方法啦,比如将奇数偶数分开算,设置sum1和sum2,最后将他们加起来也是没问题的。

如果能帮助到你解决问题,点个赞再走吧~

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值