测试一个数字是否是使用不同函数的回文(C ++)

时间:2015-11-24 16:56:00

标签: c++ function palindrome

我使用的代码是:

#include <iostream>
using namespace std;


int reverse (int number){
  int t = number, m = 0;
    do
    {
        m = m*10 + t%10;
    } while(t /= 10);

    return m == number;
}

bool isPalindrom(int number){
    bool Palindrom = reverse(number);
  if(Palindrom == true){
   return true;   
  } else { 
   return false;   
  }
    return 0; 
}

int main()
{
  int number;
  cout << "Please input a number " << endl;
  cin >> number;

  if(isPalindrom){
   cout << "This is a Palindrom" << endl;   
  } else {
    cout << "This is not a Palindrom" << endl;   
  }

}

我遇到的问题是isPalindrom总是评估为true。我相信这是因为我试图错误地设置它。程序要求我们使用两个函数bool isPalindrom(int number)和int reverse(int number)。我只是学习在C ++中使用函数,所以我不确定应该做什么。我是否应该反向返回数字翻转self(m)然后在palindrom比较数字到m,如果它的计算结果为true,它将返回true。然后在主要检查中使用if语句查看isPalindrom是否为true / false。

4 个答案:

答案 0 :(得分:2)

您没有正确调用此功能。

 if(isPalindrom){
    cout << "This is a Palindrom" << endl;   
 } else {
    cout << "This is not a Palindrom" << endl;   
 }

要调用它,你必须提供这样的参数

if (isPalindrom(number)) {
    ....

在你的代码isPlanindrom中(我相信,但实际上如果我在这一点上是正确的并不重要)一个函数指针,因为它处于如果它被转换为bool的状态,总是true

PS:我刚才注意到我写的答案太快了。我刚看到这个问题,并没有看到其余的代码。看起来您需要了解非常基础知识,这些内容在答案中无法涵盖。我的建议:拿一本书和rtfm:P

答案 1 :(得分:1)

main中,您正在评估是否存在名为isPalindrom的函数;你实际上并没有调用这个函数。 if(isPalindrom){应该成为if(isPalindrom(number)){

答案 2 :(得分:1)

你忘记用一个参数调用isPalindrom。这是修复:

#include <iostream>
using namespace std;

bool reverse (int number){
    int t = number, m = 0;
    do
    {
        m = m*10 + t%10;
    } while(t /= 10);

    return m == number;
}

bool isPalindrom(int number){
    return reverse(number);
}

int main()
{
  int number;
  cout << "Please input a number " << endl;
  cin >> number;

  if(isPalindrom(number)){
   cout << "This is a Palindrom" << endl;   
  } else {
    cout << "This is not a Palindrom" << endl;   
  }
}

我也是:

  • 将您的isPalindrom()函数简化为简单的return语句;
  • reverse的回复率从int设置为bool

您可以尝试 LiveDemo

答案 3 :(得分:0)

简短回答:您忘了致电 isPalindrom

长答案:isPalindom衰减到非空函数指针,非空指针测试为真,这总是会看到if分支。

此外:

  • 是的,根据名称和返回类型判断,reverse旨在返回数字的反向。
  • 相应地,isPalindom的工作是进行实际比较。

此外,在大多数情况下,

if (boolean) { return true; }
else { return false; }

应替换为

return boolean;

最后,你真的应该测试cin是否成功,你的输入是否有效。 (例如,允许用户输入0-73Zero?)