检查一个具有偶数位数字的数是否为回文数


回文数是指数字反转后仍然相同的数。在这个程序中,我们需要根据偶数位数字设置条件和操作,以识别给定的输入是否满足回文数的条件。在C++中,我们有STL(标准模板库)函数,例如to_string()、length()、rbegin()、rend()和push_back(),将用于检查一个具有偶数位数字的数是否为回文数。例如,2662、42124、44、888等都是满足偶数位回文数条件的数字。

使用for循环和if-else语句

该程序使用for循环根据偶数设置迭代和条件,并使用if-else语句检查其是否为回文数。

语法

以下语法在示例中使用:

to_string()

内置函数to_string()接受单个整型变量并将其转换为字符串。

length() 

length()是C++的预定义函数,返回字符串的长度。

算法

以下步骤为:

步骤1:通过提及所有必要的头文件(例如iostream和string)来启动程序。

步骤2:然后使用名为isPalimdrome()的布尔类型函数定义,该函数接受整型变量n作为参数来处理偶数回文数。

步骤3:接下来,使用内置函数to_string()将整数转换为字符串类型并将其存储在变量int_str中。然后计算名为int_str的变量的长度并将其存储在变量len中。

步骤4:使用for循环,变量i遍历字符串的长度,并设置偶数回文数的条件,即len/2,并递增以检查偶数值范围。

步骤5:然后使用if语句检查当前索引i处的字符是否等于字符串末尾len - i - 1处的相应字符。如果所有字符对都不相等,则返回false;如果发现相等,则返回true。

步骤6:开始初始化整数n以设置值,并使用if-else语句接受名为isPalimdrome()的调用函数的参数,以检查其是否满足偶数回文数的条件,并打印结果。

示例

在下面的示例中,我们将检查偶数位数字是否为回文数。

#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(int n) {
// Using predefined function to_string() it converts the integer into string
    string int_str = to_string(n);
// Using length() it finds the length of the string
    int len = int_str.length();
// Set the condition for even palindrome number
    for (int i = 0; i < len / 2; i++) {
        if (int_str[i] != int_str[len - i - 1]) {
            return false;
        }
    }
    return true;
}
int main() {
// integer set to even number
    int num = 23132;
    if (isPalindrome(num))
    {
        cout << "The given number is a satisfied palindrome. " << endl;
    } 
    else 
    {
        cout << "The given number is not satisfied for palindrome." << endl;
    }
    return 0;
}

输出

The given number is a satisfied palindrome.

使用vector库

该程序使用vector库提供一些相关的预定义函数,例如rbegin()、rend()和push_back(),以解决偶数位数字是否为回文数的问题。

语法

以下语法在示例中使用:

rbegin()

rbegin()是C++ STL的预定义函数,它指向给定输入字符串的末尾字符。

rend()

rend()是C++ STL的预定义函数,它指向vector的反向末尾。换句话说,它指向第一个字符之前的 位置。

push_back()

push_back()是一个著名的预定义函数,它遵循vector库。该函数用于从尾部/末尾删除元素。

算法

以下步骤为:

步骤1:我们将通过包含所有必要的头文件来启动程序。

步骤2:初始化两个整型vector变量:

  • test(int n) - 从main函数中提到的变量num接收整数值。

  • result - 此变量用于计算问题陈述的结果。

步骤3:接下来,使用for循环,变量i遍历输入整数,并使用<运算符设置条件以根据给定的整型变量n查找所有范围。然后以‘+= 2’递增,这将检查偶数位置并查找回文数。

步骤4:现在将使用一些预定义函数,例如to_string() - 将整数转换为字符串,rbegin()和rend() - 检查两侧的反转,并使用if语句检查其是否为回文数。

步骤5:要启动主函数,请初始化变量n以设置整数输入并打印偶数回文数。接下来,使用调用vector函数生成所有满足回文数条件的偶数。

步骤6:最后,我们使用for循环,其中变量i遍历vector result,并打印0和给定整数n之间所有满足条件的回文数。

示例

在下面的示例中,我们将检查输入整数是否满足偶数回文数的条件。

#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> test(int n) {
vector<int> result;
// Apply the condition for even palindrome numbers between 50-100
// using += 2 checks for an even index positioning
    for (int i = 0; i < n; i += 2) 
    {
        string str = to_string(i);
        string rvs(str.rbegin(), str.rend());
        if (str == rvs) 
        {
            result.push_back(i);
        }
    }
    return result;
}
//Start the main function
int main() 
{
    int n = 2000;
    cout << "\nEven palindrome numbers between 0 to " << n << ":\n";
    vector<int> result = test(n);
    for (int i : result) 
    {
    cout << i << ' ';
    }
    return 0;
}

输出

Even palindrome numbers between 0 to 2000:
0 2 4 6 8 22 44 66 88 202 212 222 232 242 252 262 272 282 292 404 414 424 434 444 454 464 474 484 494 606 616 626 636 646 656 666 676 686 696 808 818 828 838 848 858 868 878 888 898 

结论

我们讨论了两种方法来解决基于偶数位数字是否为回文数的问题陈述。第一种方法简单地使用for循环和if语句来设置偶数的条件,而第二种方法使用vector库来提供一些STL函数。

更新于:2023年8月17日

258 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告