#include <stdio.h>
int main()
{
int m, n;
double sum;
scanf("%d%d", &m, &n);
// m 比 n 大,通过异或交换两者,保证 m < n
if (m > n)
{
m = m ^ n;
n = m ^ n;
m = m ^ n;
}
while(m<=n)
{
if (m % 2 == 0)
sum+=(1.0/m);
m++;
}
printf("%lf", sum);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int m, n;
double sum;
cin >> m >> n;
if (m > n)
{
m = m ^ n;
n = m ^ n;
m = m ^ n;
}
while(m<=n)
{
if (m % 2 == 0)
sum+=(1.0/m);
m++;
}
cout<<sum<<endl;
return 0;
}
原理比较简单,直接遍历范围内的所有数,判断是不是偶数,将所有偶数想加,倒数就不说了。主要代码如下:
……
int m,n;
double sum
//判断是否是偶数,并将所有偶数想加,最后求出倒数就行了
for(int i = m; i <= n; i++) {
if(i % 2 == 0) {
sum += 1.0 / i;
}
}
……
加油~~~
不知道你这个问题是否已经解决, 如果还没有解决的话:一闪而过是因为你的程序没有输入,只有固定的输出。程序会在运行到 return 语句时退出程序。
之前给的三种解决办法我一一讲解:
第一种:
cin.clear(); // 清空缓存
cin.sync(); // 清空缓存
cin.get(); // 接收键盘输入
// From:本帖,"但对于太突然"
这种采用了输入方法来不让程序终止,他会在读入到数据后退出程序(cin.get)。
#include <stdio.h>
int main()
{
getchar();
return 0;
}
// From:本帖,"xuezy"
这种是采用了输入方法,但不同于上一种的是,这次是使用 getchar 函数获取一个 char 类型,但不将读入的数据存放于任何变量。
#include <stdlib.h>
int main()
{
system("pause"); //注意:“system("pause")”;语句会显示“请按任意键继续……”
return 0;
}
// From:本帖,"xuezy"
此方法是采用 system() 函数中的 pause 命令进行程序的暂停。