C语言一个非负整数N,如果各位数字从左至右是对称的,就是回文数。 输入格式: 若干个以空格或回车分隔的非负整数,每个整数代表一组数据。 输出格式: 每组数据的输出独占一行,若是回文数,输出:YES,否则输出:NO。
时间: 2024-09-26 11:05:58 浏览: 176
在C语言中,判断一个非负整数是否为回文数可以通过将数字转换为字符串,然后比较字符串的前半部分和后半部分是否相同来实现。以下是简单的步骤:
1. 输入一个整数 N,首先将其转换为字符串形式。
2. 初始化两个指针,一个指向字符串的开始(即第一个字符),另一个指向字符串的结束(即倒数第二个字符)。
3. 比较这两个指针所指向的字符,如果相等,则继续向中间移动;如果不等,则返回 "NO"。
4. 当两个指针相遇(即已经检查了整个字符串的一半)时,因为是从两端向中心比对的,所以如果没有提前返回 "NO",则说明该数是回文数,输出 "YES"。
以下是C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
int isPalindrome(int num) {
char str[100];
int len = snprintf(str, sizeof(str), "%d", num);
str[len] = '\0'; // 添加终止符
int start = 0;
int end = strlen(str) - 1;
while (start < end) {
if (str[start] != str[end]) {
return 0; // 不是回文数
}
start++;
end--;
}
return 1; // 是回文数
}
int main() {
int num;
while (scanf("%d", &num) == 1) {
if (isPalindrome(num)) {
printf("YES\n");
} else {
printf("NO\n");
}
}
return 0;
}
```
阅读全文