21xrx.com
2025-04-17 21:27:08 Thursday
文章检索 我的文章 写文章
C++顺序结构题目-NMR
2023-06-29 12:56:15 深夜i     10     0
C++ 顺序结构 题目 NMR

今天我来给大家介绍一道C++顺序结构题目——NMR。这道题目其实很简单,只要掌握好C++的基本语法就可以了。

首先,我们来看一下题目的要求。NMR是一个比较有趣的数字,它的值等于每个数字的立方和,例如153就是NMR,因为1³+5³+3³=153。现在,我们要求输入一个正整数n,输出从1到n之间的所有NMR。如果n过大,而且其中没有NMR,就输出“no”。

我们可以把这道题目分成几个步骤来解决。首先,我们需要获取用户输入的正整数n。这可以通过C++中的cin语句完成,如下所示:

int n;
cin >> n;

然后,我们需要遍历从1到n之间的所有数字,并判断它们是否是NMR。这可以通过循环语句来完成。例如,我们可以使用for循环语句,如下所示:

for (int i = 1; i <= n; i++)
  // 判断数字i是否是NMR

接下来,我们需要编写一个函数来判断一个数字是否是NMR。这个函数的实现很简单,只需要按照题目中的要求计算每个数字的立方和,并将结果与原数字比较即可。例如,下面是一个判断数字是否是NMR的函数的实现:

bool isNMR(int num)
{
  int sum = 0;
  int tmp = num;
  while (tmp != 0)
  {
    int digit = tmp % 10;
    sum += digit * digit * digit;
    tmp /= 10;
  }
  return sum == num;
}

最后,我们只需要在循环中调用这个函数来判断每个数字是否是NMR,并将结果输出即可。例如,下面是完整的程序代码:

#include <iostream>
using namespace std;
bool isNMR(int num)
{
  int sum = 0;
  int tmp = num;
  while (tmp != 0)
  {
    int digit = tmp % 10;
    sum += digit * digit * digit;
    tmp /= 10;
  }
  return sum == num;
}
int main()
{
  int n;
  cin >> n;
  bool hasNMR = false;
  for (int i = 1; i <= n; i++)
  {
    if (isNMR(i))
    
      cout << i << endl;
      hasNMR = true;
    
  }
  if (!hasNMR)
  
    cout << "no" << endl;
  
  return 0;
}

综上所述,如果你掌握了C++的基本语法,那么解决这道题目就很简单了。当然,如果你感觉这个题目过于简单,可以尝试解决一些更加有挑战性的题目,来不断提升自己的编程能力。

  
  

评论区