用C语言编写一个函数,判断一个整数是不是回文数
时间: 2023-06-12 14:06:53 浏览: 111
以下是用C语言编写的判断整数是否为回文数的函数:
```c
#include <stdio.h>
#include <stdbool.h>
bool isPalindrome(int x) {
// 如果x小于0或者最后一位是0但x不等于0,则x不是回文数
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int reversed = 0;
while (x > reversed) { // 只需要翻转一半的数字
reversed = reversed * 10 + x % 10;
x /= 10;
}
// 如果数字长度为奇数,可以通过reversed/10去除中间的数字
// 例如,1221,翻转后reversed=122,x=12
return x == reversed || x == reversed / 10;
}
```
该函数首先判断输入的整数是否为负数或者以0结尾但不是0本身,这些情况下该整数不是回文数。然后,利用一个while循环将数字翻转,只需要翻转数字的一半即可。在翻转的过程中,需要将翻转后的数字与原始数字进行比较,如果相等,则说明该整数是回文数。如果数字长度为奇数,则可以通过reversed/10去除中间的数字。
相关问题
如何用C语言编写一个函数来判断一个整数是否为回文数?
在C语言中,可以编写一个函数来检查一个整数是否是回文数。回文数是指从前往后读和从后往前读都一样的数字,例如121、1221等。这里提供一个简单的示例,使用了两个指针分别指向数的开始和结束:
```c
#include <stdio.h>
// 函数声明
int isPalindrome(int num);
int main() {
int input;
printf("请输入一个整数:");
scanf("%d", &input);
if (isPalindrome(input))
printf("%d是一个回文数。\n", input);
else
printf("%d不是一个回文数。\n", input);
return 0;
}
// 判断回文数的函数
int isPalindrome(int num) {
// 如果输入是负数,直接返回不是回文
if (num < 0)
return 0;
int start = num; // 开始位置
int end = num; // 结束位置,并逐步减半
while (end / 10 > 0) { // 当末位不为0并且还有剩余位时
int digit_start = start % 10; // 获取开始位置的最后一位
int digit_end = end % 10; // 获取结束位置的最后一位
// 比较两端的数字,如果不同则不是回文
if (digit_start != digit_end) {
return 0;
}
start /= 10; // 移动开始位置到下一个数字
end /= 10; // 移动结束位置到下一个数字
}
return 1; // 数字是回文
}
```
如何用C语言编写一个函数来判断一个整数是否为回文数?不是C99
在C语言中(非C99),我们可以使用传统的指针和数组来实现一个简单的函数来检查一个整数是否是回文数。这里是一个基本的示例:
```c
#include <stdio.h>
// 函数声明
int isPalindrome(int num);
int main() {
int input;
printf("请输入一个整数: ");
scanf("%d", &input);
if (isPalindrome(input)) {
printf("%d 是回文数。\n", input);
} else {
printf("%d 不是回文数。\n", input);
}
return 0;
}
// 回文数判断函数
int isPalindrome(int num) {
// 将数字转换为字符串便于处理
char str[100];
itoa(num, str, 10); // C99以后可用itoa,此版本我们手动处理
// 使用两个指针,一个从头开始,一个从尾部开始比较字符
int start = 0;
int end = strlen(str) - 1;
while (start < end) {
if (str[start] != str[end]) { // 如果发现首尾字符不相等
return 0; // 数字不是回文,直接返回0
}
start++; // 移动起始指针向前一位
end--; // 移动结束指针向后一位
}
return 1; // 遍历结束后,如果没发现问题,说明是回文数,返回1
}
```
这个程序首先将输入的整数转换成字符串,然后通过两个指针分别指向字符串的首尾字符进行比较,直到它们相遇或找到不匹配的字符。
阅读全文