n 是任意自然数,将 n 的各位数字反向排列所得自然数 n1 与 n 相等,则称 n 为一回文数。例如,12321 是回文数,12345 则不是。用c语言解决
时间: 2024-10-23 17:08:51 浏览: 28
在C语言中,你可以通过遍历整数n的每一位,并将其添加到另一个字符串中,然后创建一个新的整数n1,比较这两个数是否相等来判断一个数是否为回文数。以下是一个简单的示例函数:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool isPalindrome(int n) {
if (n <= 0) {
return false;
}
int original = n;
char reverse[100]; // 存储反转后的字符串
int rev_index = 0;
// 反转数字
while (n > 0) {
reverse[rev_index++] = (n % 10) + '0';
n /= 10;
}
// 添加前导零如果需要
while (reverse[rev_index] == '0' && rev_index > 1) {
reverse[--rev_index] = '\0'; // 移除多余的'0'
}
// 比较原数和反转后的数
int n1 = atoi(reverse); // 将字符串转换回整数
return original == n1;
}
int main() {
int num;
printf("Enter a number: ");
scanf("%d", &num);
if (isPalindrome(num)) {
printf("%d is a palindrome.\n", num);
} else {
printf("%d is not a palindrome.\n", num);
}
return 0;
}
```
在这个程序中,我们首先检查输入的数是否为负数(因为非负整数才能形成回文),然后逐位反转数字并存储到`reverse`数组中。最后将反转后的字符串转换回整数并与原始数进行比较。
阅读全文