如何用C语言编写一个程序来判断任意进制的数是否为回文数?
时间: 2025-02-22 21:31:24 浏览: 58
在C语言中,我们可以编写一个程序来判断任意进制的整数是否为回文数。首先,你需要将输入的字符串转换成十进制整数,然后反转这个整数并与原数进行比较。如果两者相等,则它是回文数。以下是简单的步骤:
1. 定义函数 `isPalindrome` 接受两个参数:输入的字符串 `numStr` 和它的长度 `len`。
```c
#include <stdio.h>
#include <string.h>
// 辅助函数,将字符数组转换为十进制整数
int strToInt(char *str) {
int num = 0;
for (int i = 0; i < strlen(str); i++) {
if (str[i] >= '0' && str[i] <= '9') {
num = num * 10 + (str[i] - '0');
} else {
// 如果不是数字字符,返回错误(这里假设只接受数字)
return -1;
}
}
return num;
}
// 判断是否是回文
int isPalindrome(char *numStr, int len) {
int originalNum = strToInt(numStr);
int reversedNum = 0;
// 反转整数
for (int i = len - 1; i >= 0; i--) {
char digitChar = numStr[i];
if (digitChar >= '0' && digitChar <= '9') {
reversedNum = reversedNum * 10 + (digitChar - '0');
} else {
return 0; // 非数字字符,直接返回不是回文
}
}
return originalNum == reversedNum;
}
```
2. 主函数中获取用户输入,检查回文性并打印结果:
```c
int main() {
char numStr[100];
printf("请输入一个任意进制的数(例如,二进制的1010):");
fgets(numStr, sizeof(numStr), stdin);
// 去除换行符
numStr[strcspn(numStr, "\n")] = '\0';
int len = strlen(numStr);
if (isPalindrome(numStr, len)) {
printf("%s 是回文数.\n", numStr);
} else {
printf("%s 不是回文数.\n", numStr);
}
return 0;
}
```
阅读全文
相关推荐


















