题目描述
编写程序,在主函数中完成求出10000内的所有回文数,以及回文数个数的功能。(此题要求用数组作为拆解后每位数字的临时存储)
案例代码
使用数组来拆解每位数字并进行临时存储:
#include <stdio.h>
// 函数声明
int isPalindrome(int num);
int main() {
int count = 0; // 回文数的个数
printf("10000以内的所有回文数为:\n");
// 遍历1到10000之间的数字
for (int i = 1; i <= 10000; i++) {
if (isPalindrome(i)) { // 判断是否为回文数
printf("%d ", i);
count++; // 计数器加1
}
}
printf("\n10000以内的回文数个数为:%d\n", count);
return 0;
}
// 判断一个数是否为回文数的函数
int isPalindrome(int num) {
int originalNum = num;
int length = 0;
int temp = num;
// 计算数字的位数
while (temp != 0) {
length++;
temp /= 10;
}
// 使用数组存储每位数字
int digits[length];
temp = num;
for (int i = length - 1; i >= 0; i--) {
digits[i] = temp % 10;
temp /= 10;
}
// 判断是否为回文数
for (int i = 0; i < length / 2; i++) {
if (digits[i] != digits[length - 1 - i]) {
return 0; // 不是回文数
}
}
return 1; // 是回文数
}
这个程序在 isPalindrome
函数中,首先计算数字的位数,并使用数组 digits
存储每位数字。然后遍历数组,判断是否为回文数。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END