C语言:查找10到1000之间的回文数

本文介绍两种使用C语言查找10到1000之间回文数的方法,并提供详细的代码示例。

什么是回文数?

回文数是指正序和倒序读取都相同的数字,例如121、55、232等。

方法一:使用字符串比较

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

int is_palindrome(int num) {
    char str[10];
    sprintf(str, '%d', num);
    int len = strlen(str);
    
    for (int i = 0; i < len / 2; i++) {
        if (str[i] != str[len - i - 1]) {
            return 0;
        }
    }
    
    return 1;
}

int main() {
    printf('10到1000之间的回文数:\n');
    for (int num = 10; num <= 1000; num++) {
        if (is_palindrome(num)) {
            printf('%d\n', num);
        }
    }
    
    return 0;
}

这段代码首先定义了一个名为is_palindrome的函数,该函数接收一个整数作为参数,并判断该整数是否是回文数。

is_palindrome函数内部,首先使用sprintf函数将整数转换为字符串,然后使用strlen函数获取字符串的长度。

接着,使用一个循环遍历字符串的前半部分,比较字符串中对称位置的字符是否相等。如果所有对称位置的字符都相等,则该整数是回文数,函数返回1;否则,函数返回0。

main函数中,使用一个循环遍历10到1000之间的所有整数,并调用is_palindrome函数判断每个整数是否是回文数。如果是,则打印该整数。

方法二:使用数学运算

#include <stdio.h>

int is_palindrome(int num) {
    int temp = num;
    int reverse = 0;
    
    while (temp != 0) {
        reverse = reverse * 10 + temp % 10;
        temp /= 10;
    }
    
    return (num == reverse);
}

int main() {
    printf('10到1000之间的回文数:\n');
    for (int num = 10; num <= 1000; num++) {
        if (is_palindrome(num)) {
            printf('%d\n', num);
        }
    }
    
    return 0;
}

这段代码也定义了一个名为is_palindrome的函数来判断一个整数是否是回文数,但使用了不同的方法。

is_palindrome函数内部,首先创建一个临时变量temp来存储传入的整数。然后,使用一个循环将temp的各位数字逆序存储到另一个变量reverse中。

循环结束后,比较numreverse的值。如果相等,则该整数是回文数,函数返回1;否则,函数返回0。

main函数与方法一相同,也是使用一个循环遍历10到1000之间的所有整数,并调用is_palindrome函数判断每个整数是否是回文数。

总结

本文介绍了两种使用C语言查找回文数的方法:字符串比较和数学运算。两种方法各有优缺点,可以根据实际情况选择合适的方法。

C语言:查找10到1000之间的回文数

原文地址: https://www.cveoy.top/t/topic/mZb 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录