C+中的回文数+; 我试图写一个C++程序来查找一个数字是否是回文。这是我的密码。问题是,即使数字是回文,程序也会返回false #include <cstdlib> #include <iostream> #include <string> bool is_palindrome(int n){ std::string num = std::to_string(n); int len = num.length(); bool check = false; for(int i=0; i < len/2; i++){ if(num[i] == num[len-i]) check = true; } return check; } int main(){ int num = 23232; std::cout<< is_palindrome(num) << std::endl; return 0; } #包括 #包括 #包括 bool是回文(int n){ std::string num=std::to_string(n); int len=num.length(); 布尔检查=假; 对于(int i=0;i

C+中的回文数+; 我试图写一个C++程序来查找一个数字是否是回文。这是我的密码。问题是,即使数字是回文,程序也会返回false #include <cstdlib> #include <iostream> #include <string> bool is_palindrome(int n){ std::string num = std::to_string(n); int len = num.length(); bool check = false; for(int i=0; i < len/2; i++){ if(num[i] == num[len-i]) check = true; } return check; } int main(){ int num = 23232; std::cout<< is_palindrome(num) << std::endl; return 0; } #包括 #包括 #包括 bool是回文(int n){ std::string num=std::to_string(n); int len=num.length(); 布尔检查=假; 对于(int i=0;i,c++,c++11,C++,C++11,num数组的最大索引是len-1,而不是len。因此使用: if (num[i] == num[len - 1 - i]) 比较第一个数组索引和最后一个数组索引,依此类推 还有另一个错误,因为is_palindrome()将返回true,即使有一个巧合(即,如果任何两个索引匹配,则返回true)。因此当选中时变为true时,它将不再变为false 您最终可以更改为: for (int i = 0; i < len/2; i++) if (num[i] != num[len - 1

num数组的最大索引是
len-1
,而不是
len
。因此使用:

if (num[i] == num[len - 1 - i])
比较第一个数组索引和最后一个数组索引,依此类推

还有另一个错误,因为
is_palindrome()
将返回
true
,即使有一个巧合(即,如果任何两个索引匹配,则返回
true
)。因此当
选中时
变为
true
时,它将不再变为
false

您最终可以更改为:

for (int i = 0; i < len/2; i++)
    if (num[i] != num[len - 1 - i])
        return false;

return true;
for(int i=0;i
如果选择正确的基数,每个数字都是回文;)