C语言编写程序求100000以内的回文数的个数

题目描述

编写程序,在主函数中完成求出10000内的所有回文数,以及回文数个数的功能。(此题要求用数组作为拆解后每位数字的临时存储)

案例代码

使用数组来拆解每位数字并进行临时存储:

#include <stdio.h>

// 函数声明
int isPalindrome(int num);

int main() {
    int count = 0;  // 回文数的个数

    printf("10000以内的所有回文数为:\n");
    // 遍历1到10000之间的数字
    for (int i = 1; i <= 10000; i++) {
        if (isPalindrome(i)) {  // 判断是否为回文数
            printf("%d ", i);
            count++;  // 计数器加1
        }
    }

    printf("\n10000以内的回文数个数为:%d\n", count);

    return 0;
}

// 判断一个数是否为回文数的函数
int isPalindrome(int num) {
    int originalNum = num;
    int length = 0;
    int temp = num;
    
    // 计算数字的位数
    while (temp != 0) {
        length++;
        temp /= 10;
    }
    
    // 使用数组存储每位数字
    int digits[length];
    temp = num;
    for (int i = length - 1; i >= 0; i--) {
        digits[i] = temp % 10;
        temp /= 10;
    }
    
    // 判断是否为回文数
    for (int i = 0; i < length / 2; i++) {
        if (digits[i] != digits[length - 1 - i]) {
            return 0;  // 不是回文数
        }
    }
    
    return 1;  // 是回文数
}

这个程序在 isPalindrome 函数中,首先计算数字的位数,并使用数组 digits 存储每位数字。然后遍历数组,判断是否为回文数。

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享