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
num数组的最大索引是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
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
如果选择正确的基数,每个数字都是回文;)