题目:计算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()//这里一定没有分号!!!
{ }