这是我的代码:
#include <iostream>
#include <string>
#include <utility>
int main(){
std::string swapInt, b;
int testCase, integer;
bool loop;
std::cout<<"Enter the testCase: ";
std::cin>>testCase;
while(testCase--){
std::cout<<"Enter the integer: ";
std::cin>>integer;
int a = integer;
loop = true;
if(a >= 1000000 || a<=0){
std::cout<<"Error, number too extreme"<<std::endl;
loop = false;
testCase++;
}
while(loop){
std::string temp = std::to_string(integer);
b = temp;
swapInt = b;
for(long long unsigned int i=0;i<b.size()/2;i++){
std::swap(swapInt[i], swapInt[swapInt.size()-i-1]);
}
if(swapInt==b){
loop = false;
break;
}else{
int temp2 = std::stoi(b);
temp2++;
integer = temp2;
}
}
if(a >= 1000000 || a<= 0){
continue;
}else{
std::cout<<"Nearest Palindrome is: "<<b<<std::endl;
}
}
return 0;
}
一切都很完美,但一件奇怪的事情是,如果我输入 10000000000000000000 作为整数,我会得到一个无限循环:
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
Enter the integer: Error, number too extreme
(and so on)
但是对于 1000000 或更多一点它工作得很好,只是:
Enter the integer: 10000000
Error, number too extreme
Enter the integer:
我是 C++ 的新手,试图把我的第一个问题做对,接下来我应该做什么?