意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

使用C语言实现不同进制下的回文数检测

来源:恒创科技 编辑:恒创科技编辑部
2024-04-28 14:18:23

#include <stdio.h>

// 将十进制数转换为指定进制的字符串
char* convertToBase(int num, int base) {
    static char buffer[32];
    char digits[] = "0123456789ABCDEF";
    int index = 0;

    while (num > 0) {
        buffer[index++] = digits[num % base];
        num /= base;
    }

    buffer[index] = '\0';

    return buffer;
}

// 检测一个字符串是否为回文数
int isPalindrome(char* str) {
    int length = strlen(str);

    for (int i = 0; i < length / 2; i++) {
        if (str[i] != str[length - i - 1]) {
            return 0;
        }
    }

    return 1;
}

int main() {
    int num;
    printf("请输入一个十进制数:");
    scanf("%d", &num);

    for (int base = 2; base <= 16; base++) {
        char* str = convertToBase(num, base);
        if (isPalindrome(str)) {
            printf("%d进制下的回文数为:%s\n", base, str);
        }
    }

    return 0;
}

这段代码首先实现了一个将十进制数转换为指定进制的字符串的函数convertToBase,然后实现了一个检测一个字符串是否为回文数的函数isPalindrome。在main函数中,用户输入一个十进制数,然后程序将该数转换为2到16进制的字符串,并检测是否为回文数,若是回文数则输出。


使用C语言实现不同进制下的回文数检测

上一篇: C语言中的回文判断与字符编码的关系探讨 下一篇: 如何使用C语言处理镜像回文图案的生成