这个C++程序如何编写

img


不知道该如何编写该程序,艰难的大学生初学C++,求学霸解答。

  • c语言实现:
#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;
}



  • c++ 实现:
#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;
   }
}
……

加油~~~

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7639816
  • 这篇博客你也可以参考下:C++函数调用过程中,形参的值发生了改变,实参的值却没有改变。
  • 除此之外, 这篇博客: 【C++】菜鸟教程个人C++学习笔记中的 代码一闪而过的问题所在和解决方法。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    一闪而过是因为你的程序没有输入,只有固定的输出。程序会在运行到 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 命令进行程序的暂停。

  • 您还可以看一下 林男老师的小学生c++趣味编程入门视频教程 少儿C十十信息学奥赛竞赛网课课程中的 课前介绍小节, 巩固相关知识点

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^