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

C语言用for循环判断回文数(有代码有解析)

回文数是一个有趣的数学概念,它指的是从前往后读和从后往前读都完全相同的数字。例如,121、1221、45654 都是回文数。
 

在编程中,判断一个数是否为回文数是一个常见的练习题,可以帮助我们更好地理解循环和数字处理的概念。


要判断一个数是否为回文数,我们需要比较这个数的第一位和最后一位、第二位和倒数第二位,以此类推。如果所有对应的数字都相同,那么这个数就是回文数。在C语言中,我们可以使用 for 循环来实现这个判断过程。
 

实现这个判断的基本思路是:首先将输入的数字转换为字符串,这样我们就可以方便地访问每一位数字。然后使用 for 循环,从字符串的两端向中间移动,比较对应位置的字符是否相同。如果在比较过程中发现任何不匹配的情况,就可以立即判定这个数不是回文数。如果循环结束后没有发现不匹配的情况,那么这个数就是回文数。
 

下面是一个使用C语言实现回文数判断的示例代码:

#include <stdio.h>
#include <string.h>

int isPalindrome(int num) {
    char str[20];
    sprintf(str, "%d", num);
    int len = strlen(str);
    
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - 1 - i]) {
            return 0;  // 不是回文数
        }
    }
    return 1;  // 是回文数
}

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

在这个代码中,我们定义了一个 isPalindrome 函数来判断输入的数字是否为回文数。这个函数首先使用 sprintf 将整数转换为字符串,然后使用 strlen 获取字符串的长度。接下来,我们使用 for 循环来比较字符串的首尾字符。循环次数为字符串长度的一半,因为我们只需要比较到中间位置即可。
 

在循环中,我们比较第 i 个字符和倒数第 i 个字符(即 len - 1 - i)。如果发现任何不匹配的情况,函数立即返回 0,表示这不是一个回文数。如果循环正常结束,说明所有对应的字符都匹配,函数返回 1,表示这是一个回文数。
 

在 main 函数中,我们从用户那里获取输入,然后调用 isPalindrome 函数进行判断,最后根据结果输出相应的信息。
 

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

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

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

这个方法的优点是实现简单,易于理解,但是它也有一些局限性,比如需要额外的内存来存储字符串。如果题目有特殊要求,我们可能需要考虑直接对数字进行数学运算来判断是否为回文数,而不是转换为字符串。不过,对于初学者来说,这个方法是一个很好的起点,可以帮助理解循环、字符串处理和函数的基本概念。

相关文章