C语言 分数求和(易错点)

文章讲述了如何修正C语言代码中的错误,以正确计算1到100中奇数项减去偶数项分数的和,关键在于使用浮点数除法而非整数除法。
摘要由CSDN通过智能技术生成

题目:计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果。

下面是小编最初的代码,计算结果是错的

#include<stdio.h>
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果
int main()
{
	int a = 0;
	double sum1 = 0;
	double sum2 = 0;
	double sum = 0;
	for (a = 1; a <= 99; a+=2)//分母为奇数
	{
		sum1 += 1 / a;
	}
	for (a = 2; a <= 100; a += 2);//分母为偶数
	{
		sum2 += 1 / a;
	}
	sum = sum1 - sum2;
	printf("%lf\n", sum);
	return 0;
}

下面是正确的

int main()
{
	int a = 0;
	double sum1 = 0;
	double sum2 = 0;
	double sum = 0;
	for (a = 1; a <= 99; a+=2)//分母为奇数
	{
		sum1 += 1.0 / a;//要写成1.0而不能写成1
	}
	for (a = 2; a <= 100; a += 2)//分母为偶数
	{
		sum2 += 1.0 / a;
	}
	sum = sum1 - sum2;
	printf("%lf\n", sum);
	return 0;
}

/除号两端是整数执行整数除法,是整除,得到的结果也是整数,会丢弃小数部分。
想得到浮点数的结果,两个运算数必须至少有一个浮点数,这时才会进行浮点数除法。

for循环语句的语法结构:

for()//这里一定没有分号!!!
{ }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值