首页 > 编程笔记 > C语言笔记

回文数C语言程序编写(有代码有解析)

回文数是一个有趣的数学概念,它指的是从左向右读和从右向左读都完全相同的数字。例如,121、1221、45654 都是回文数。这个概念不仅适用于数字,也适用于字符串,比如 "radar"、"level" 等都是回文字符串。


要判断一个数是否为回文数,我们可以采用以下逻辑:将原始数字反转,然后比较反转后的数字是否与原始数字相等。如果相等,则该数字是回文数;如果不相等,则不是回文数。
 

这个过程涉及到数字的除法和取模运算,通过这些运算我们可以逐位提取数字,然后重新组合成反转后的数字。


下面是一个使用编写的判断回文数的程序:

#include <stdio.h>

int isPalindrome(int num) {
    int originalNum = num;
    int reversedNum = 0;
    
    while (num > 0) {
        int digit = num % 10;
        reversedNum = reversedNum * 10 + digit;
        num /= 10;
    }
    
    return originalNum == reversedNum;
}

int main() {
    int number;
    printf("请输入一个正整数:");
    scanf("%d", &number);
    
    if (isPalindrome(number)) {
        printf("%d 是回文数。\n", number);
    } else {
        printf("%d 不是回文数。\n", number);
    }
    
    return 0;
}

让我们详细解析这段代码:

首先,我们定义了一个函数 isPalindrome,它接受一个整数参数 num,这个函数的作用是判断传入的数字是否为回文数。在函数内部,我们首先将原始数字保存在 originalNum 变量中,因为在反转过程中我们会修改 num 的值。
 

reversedNum 变量用于存储反转后的数字,初始值为 0。接下来,我们使用一个 while 循环来逐位提取原始数字的每一位,并构建反转后的数字。循环的条件是 num > 0,这确保了我们能处理所有的数字位。


在循环体内,我们首先使用取模运算num % 10得到最后一位数字,然后将这个数字添加到 reversedNum 的末尾。这是通过将 reversedNum 乘以 10(相当于左移一位)然后加上新的数字来实现的。最后,我们使用整除运算num /= 10去掉原始数字的最后一位。
 

循环结束后,我们比较 originalNum 和 reversedNum。如果它们相等,说明这个数字是回文数,函数返回 1(true);否则返回 0(false)。
 

在 main 函数中,我们首先提示用户输入一个正整数,然后调用 isPalindrome 函数判断这个数字是否为回文数。根据返回结果,我们打印相应的信息告诉用户这个数字是否为回文数。
 

这个程序的输出结果可能如下:

请输入一个正整数:12321
12321 是回文数。

请输入一个正整数:12345
12345 不是回文数。

通过这个C语言程序,我们不仅实现了判断回文数的功能,还练习了数字的基本操作,如取模、整除等,这些操作在处理数字问题时非常常用。同时,我们也学习了如何将一个复杂的问题分解成小的步骤,然后通过代码逐步实现这些步骤,最终解决问题。

相关文章