#include <stdio.h>
int is_palindrome(int number) {
int digits[5];
int temp = number;
// 提取数字的每一位
for (int i = 0; i < 5; i++) {
digits[i] = temp % 10;
temp /= 10;
}
// 比较对应位置的数字是否相等
if (digits[0] != digits[4] || digits[1] != digits[3]) {
return 0;
}
return 1;
}
int main() {
int number;
printf("请输入一个5位数:");
scanf("%d", &number);
if (is_palindrome(number)) {
printf("%d 是一个回文数。\n", number);
} else {
printf("%d 不是一个回文数。\n", number);
}
return 0;
}
详细理解难点:if (digits[0] != digits[4] || digits[1] != digits[3])语句
digits[0] 表示个位数,digits[4] 表示万位数。
digits[1] 表示十位数,digits[3] 表示千位数。
在这个句中,我们比较个位与万位的数字是否相等(digits[0] 与 digits[4]),以及十位与千位的数字是否相等(digits[1] 与 digits[3])。如果有任何一对数字不相等,就返回 0 表示不是回文数,否则返回 1 表示是回文数
!= 表示不等于运算符,用于比较两个数字是否不相等。。
|| 表示逻辑或运算符,用于将两个条件进行逻辑或操作,也就是其中任何一个条件为真,整个表达式就为真。
因此,if (digits[0] != digits[4] || digits[1] != digits[3]) 表示如果个位数不等于万位数,或者十位数不等于千位数,那么整个表达式的结果就为真。这意味着该 5 位数不是回文数。
反之,如果个位数等于万位数,并且十位数等于千位数,那么整个表达式的结果为假,表示该 5 位数是回文数。