使用校验函数查找给定范围内的所有回文数
Find all palindrome numbers within a given range using a check function
我正在尝试使用检查函数查找给定限制数下的所有回文数。
这是我的代码:
#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;
}
这里的结果是直到 9 的回文数字,尽管 2 位数 < 数字
提前感谢您的回答!
改变这个
for(num>0;num<=lim;num++)
至此
for(num=0;num<=lim;num++)
为了初始化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);
}
解决方案基于 this 答案。
您的代码的主要问题是,您甚至没有使用循环,而是在函数内部使用了 if 语句。
我认为第十三行有一个错误。
for (num = 0; num <= lim; num++)
还有checkPalindrom函数,最好不要用递归。这样写就容易多了
int checkPalindrom(int num) {
int sum = 0, r;
while (num){
r = num % 10;
sum = sum * 10 + r;
num /= 10;
}
return sum;
}
我正在尝试使用检查函数查找给定限制数下的所有回文数。
这是我的代码:
#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;
}
这里的结果是直到 9 的回文数字,尽管 2 位数 < 数字
提前感谢您的回答!
改变这个
for(num>0;num<=lim;num++)
至此
for(num=0;num<=lim;num++)
为了初始化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);
}
解决方案基于 this 答案。
您的代码的主要问题是,您甚至没有使用循环,而是在函数内部使用了 if 语句。
我认为第十三行有一个错误。
for (num = 0; num <= lim; num++)
还有checkPalindrom函数,最好不要用递归。这样写就容易多了
int checkPalindrom(int num) {
int sum = 0, r;
while (num){
r = num % 10;
sum = sum * 10 + r;
num /= 10;
}
return sum;
}