目录
一.回文数
二.求回文数(10000以内)
代码:
翻译:
调试:
三.判断回文数
代码:
调试:
一.回文数
"回文数"是一种数字。
如:12321, 这个数字正读是12321,倒读也是12321,正读倒读一样
二.求回文数(10000以内)
代码:
#include <stdio.h> // 标准输入输出库,提供文件操作、屏幕输出等函数
#include <stdlib.h> // 标准库,提供内存分配、随机数等函数
int main() {
int num, reverse_num, remainder; // 定义整型变量
for(num = 0; num < 10000; num++){ // 从 0 开始循环至 9999
int temp = num; // 临时变量,用于计算反转后的数值
reverse_num = 0; // 反转数字初始化为 0
while(temp != 0){ // 当临时变量不为 0 时,执行以下操作
remainder = temp % 10; // 取临时变量的个位数值
reverse_num = reverse_num * 10 + remainder; // 将反转数乘10加上余数得到新的反转数
temp /= 10; // 临时变量右移 1 位
}
if(reverse_num == num){ // 如果反转后的数值等于原数值,输出该数值
printf("%d ", num);
}
}
system("pause");
return 0;
}
while(temp != 0){
// 当临时变量不为 0 时,执行以下操作
remainder = temp % 10;
// 取临时变量的个位数值
reverse_num = reverse_num * 10 + remainder;
// 将反转数乘10加上余数得到新的反转数
temp /= 10;
// 临时变量右移 1 位
}
翻译:
这段代码的意思是将一个数进行反转,比如对12345进行反转,得到54321,再来比较12345
和54321是否相等,如果相等则该数为回文数,所以这段代码主要求解一个数的反转数。
举例:
假设对54321进行反转,初始状态如下:
temp=54321;
reverse_num=0
remainder=0
第一步:
进入循环,判断temp是否为0,若temp不为0进行如下操作:
remainder=temp%10 (取temp的个位数)即remainder=1
reverser_num=0*10+1 (得到反转数)即reverser_num=1
temp/=10 (临时变量右移一位)即temp=5432
第二步:
第一次循环结束,进入第二次循环(temp=5432)
remainder=temp%10 (取temp的个位数)即remainder=2
reverser_num=1*10+2 (得到反转数)即reverser_num=12
temp/=10 (临时变量右移一位)即temp=543
第三步:
第二次循环结束,进入第三次循环(temp=543)
remainder=temp%10 (取temp的个位数)即remainder=3
reverser_num=12*10+3(得到反转数)即reverser_num=123
temp/=10 (临时变量右移一位)即temp=54
第四步:
第三次循环结束,进入第四次循环(temp=54)
remainder=temp%10 (取temp的个位数)即remainder=4
reverser_num=123*10+4(得到反转数)即reverser_num=1234
temp/=10 (临时变量右移一位)即temp=5
第五步:
第四次循环结束,进入第五次循环(temp=5)
remainder=temp%10 (取temp的个位数)即remainder=5
reverser_num=1234*10+5(得到反转数)即reverser_num=12345
最终用反转数12345与54321进行比较,看是否相等
调试:
三.判断回文数
代码:
#include <stdio.h>
int main() {
int num, reversedNum = 0, remainder, originalNum;
printf("请输入一个整数:");
scanf("%d", &num);
originalNum = num;
while (num != 0) {
remainder = num % 10;
reversedNum = reversedNum * 10 + remainder;
num /= 10;
}
if (originalNum == reversedNum) {
printf("%d是回文数。\n", originalNum);
}
else {
printf("%d不是回文数。\n", originalNum);
}
system("pause");
return 0;
}
调试: