【问题标题】:Returning a function in main [closed]在main中返回一个函数[关闭]
【发布时间】:2021-11-20 09:38:47
【问题描述】:

函数的目的是取一个数字并翻转它,这意味着如果数字是 1024,它将返回 4201...

创建函数后,我尝试调用它并检查它是否真的在工作,但是在调试时它似乎只是跳过了函数并打印了 1024。

我的问题是什么?

在顶部您可以看到该函数,在底部有 main(),我也在这里调用该函数。

unsigned long reverse(unsigned int x)
{
    
    int current, newX = 0, i = 1;

    while (x != 0)
    {
        current = x % 10;
        x = x / 10;
        newX = newX * 10 + current;
    }


    return newX;
}


int main()
{

    unsigned int x;

    printf("Enter number\n");
    scanf_s("%d", &x);


    reverse(x);

    printf("%d", x);

    return 0;
}

【问题讨论】:

  • 你用什么语言写的? C 和 C++ 是两种不同的语言。它们有一些相似之处,您的代码可能是两者中的任何一个,但这只是因为您遗漏了包含,最新添加它们时它是 C 或 C++,而不是两者
  • 你应该返回newX
  • c++ != c ,甚至不相似,不要混淆它们
  • @463035818_is_not_a_number OP在评论中澄清它是C。但是,一旦以其中一种语言发布了答案,我们通常不会删除任何一个标签,因为这会使那些现有的答案过时。可以说,没有先弄清语言就回答的人只能怪自己。详细信息可以在 C 或 C++ 标签 wiki 下方的标签使用中找到。
  • 不要在问题标题后面或文本中的任何位置添加(SOLVED)。并且不要将问题中的代码更改为正确的。如果答案完全解决了您的问题,请接受该答案,或者编写您自己的答案并接受它。或者,如果您认为这只是一个错字,您也可以考虑删除您的问题。

标签: c++ c visual-studio function


【解决方案1】:

您没有访问函数的返回值。 为了得到想要的结果 x = 反向(x);

【讨论】:

  • 您是否检查过这是否真的给出了预期的结果?
【解决方案2】:

通过引用获取参数并将 newX 分配给它。额外:使用 cin、cout 进行一些重构

#include <iostream>

void reverse(unsigned int & x)
{
  int current, newX = 0, i = 1;
  while (x != 0)
    {
      current = x % 10;
      x = x / 10;
      newX = newX * 10 + current;
    }
  x = newX;
}

int main()
{
  unsigned int x;
  std::cout << "Enter number\n";
  std::cin >> x;
  reverse(x);
  std::cout << x;

  return 0;
}

...或使用返回值并重新分配给main中的“x”:

unsigned int reverse(unsigned int x)
{
  int current, newX = 0, i = 1;
  while (x != 0)
    {
      current = x % 10;
      x = x / 10;
      newX = newX * 10 + current;
    }
  return newX;
}

int main()
{
  unsigned int x;
  std::cout << "Enter number\n";
  std::cin >> x;
  x= reverse(x);
  std::cout << x;

  return 0;
}

【讨论】:

  • 您是否尝试过该更改是否会产生预期结果?
  • @t.niese,谢谢,我已经解决了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多