C++ 使用检查函数查找给定范围内的所有回文数

C++ 使用检查函数查找给定范围内的所有回文数,c++,palindrome,C++,Palindrome,我正在尝试使用检查函数查找给定限制数下的所有回文数 这是我的代码: #include<iostream> using namespace std; int checkPalindrom(int); int main(){ int num,sum; int lim; cout << "Insert limit number: "; cin >> lim; cout << "Palindrome numb

我正在尝试使用检查函数查找给定限制数下的所有回文数

这是我的代码:

#include<iostream>
using namespace std;

int checkPalindrom(int);
int main(){
    int num,sum;
    int lim;

    cout << "Insert limit number: ";
    cin >>  lim;

    cout << "Palindrome numbers within the limit are: ";
    for(num>0;num<=lim;num++){
        sum=checkPalindrom(num);
        if(num==sum)
            cout << num << " ";
    }
    return 0;
}

int checkPalindrom(int num){
    int sum=0,r;
    if (num){
        r=num%10;
        sum=sum*10+r;
        checkPalindrom(num/10);
    }
    return sum;
}
#包括
使用名称空间std;
int检查回文(int);
int main(){
int num,sum;
int lim;
cout>lim;
不能改变这个吗

for(num>0;num<=lim;num++)
解决方案基于答案


代码的主要问题是,您甚至没有使用循环,而是在函数中使用了if语句。

我认为在第十三行中有一个错误


for(num=0;num)更多地说明错误以及您对代码不满意的原因。嗨,Samaras!如果我插入例如121,它将只列出9之前的回文,忽略11、22、33……等等
for(num>0;numance)您似乎有一些有效的方法(并且没有问题),您可能应该将此移到。他们将提供改进代码的建议。我不了解CheckPalindrome函数实际上是如何告诉您某个数字是否为回文的。您肯定有一些逻辑错误。主要是,您递归调用CheckPalindrome,但对其结果不做任何处理。尝试了Samaras,但结果无效同样。我正在编辑Corey Ogburn Saideyahi所知道的逻辑错误。:)建议您的实现:缩小
dig
,使函数返回
bool
的范围,也许(这是样式选择)写
num/=10
。谢谢,萨马拉斯!现在我看到我的错误。@G.Samaras肯定。这是一个很好的答案
for(num=0;num<=lim;num++)
#include<iostream>
using namespace std;

bool checkPalindrom(int);
int main() {
  int num;
  int lim;

  cout << "Insert limit number: ";
  cin >> lim;

  cout << "Palindrome numbers within the limit are: ";
  for (num = 0; num <= lim; num++) {
    if (checkPalindrom(num))
      cout << num << " ";
  }
  return 0;
}

bool checkPalindrom(int num) {
  int n = num;
  int dig, rev = 0;
  while (num > 0) {
    dig = num % 10;
    rev = rev * 10 + dig;
    num  /= 10;
  }
  return (n == rev);
}
int checkPalindrom(int num) {
    int sum = 0, r;
    while (num){
        r = num % 10;
        sum = sum * 10 + r;
        num /= 10;
    }
    return sum;
}