题目:从键盘输入一个不超过五位的整数,判断它是否为回文数,例如12321是一个回文数

Posted Maackia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题目:从键盘输入一个不超过五位的整数,判断它是否为回文数,例如12321是一个回文数相关的知识,希望对你有一定的参考价值。

这题考察的是读者对于while循环的基础能力,考点为通过while循环进行取模和取余运算,难度为:1颗星

 

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n;            // 获取用户输入的数
 5     int temp;         // 临时变量,用于存放用户输入的数进行比较
 6     int tag = 0;      // 用遍历获取的变量 tag 与用户输入的数 n 进行对比
 7 
 8     // 输入一个数
 9     printf("Please input numbers:");
10     scanf_s("%d", &n);
11     
12     // 这一步是为了将用户输入的整数赋给变量 temp, 此时我们得到了变量 temp, 而不是整数
13     temp = n;
14 
15     // 判断是否为回文数
16     if (temp >= 0 && temp < 100000)
17     {
18         while (temp > 0)
19         {
20             tag = tag * 10 + temp % 10;
21             temp = temp / 10;
22         }
23         // 若 tag 与 temp 相同则输出
24         if (tag == n)
25         {
26             printf("%d是一个回文数!\\n", n);
27         }
28         else
29         {
30             printf("%d不是一个回文数!\\n", n);
31         }
32     }
33     else
34     {
35         printf("error");
36     }
37 }

 

 先看看正确的打开方式

举个栗子,例如我们输入:12321

12321 >= 0 && 12321 < 100000 成立,进入

temp = 12321 > 0 True
第一次循环:
tag = tag * 10 + temp % 10; 》》》 tag = 0 * 10 + 12321 % 10 》》》0 + 1 = 1 // tag=1
temp = temp / 10; 》》》 temp = 12321 / 10 》》》 1232 // temp = 1232

temp = 1232 > 0 True
第二次循环:
tag = tag * 10 + temp % 10; 》》》tag = 1 * 10 + 1232 % 10 》》》10 + 2 = 12 // tag=12
temp = temp / 10; 》》》 temp = 1232 / 10 》》》 123 // temp = 123

temp = 123 > 0 True
第三次循环:
tag = tag * 10 + temp % 10; 》》》tag = 12 * 10 + 123 % 10 》》》120 + 3 = 123 // tag=123
temp = temp / 10; 》》》 temp = 123 / 10 》》》 12 // temp = 12

temp = 12 > 0 True
第四次循环:
tag = tag * 10 + temp % 10; 》》》tag = 123 * 10 + 12 % 10 》》》1230 + 2 = 1232 //tag=1232
temp = temp / 10; 》》》 temp = 12 / 10 》》》 1 // temp = 1

temp = 1 > 0 True
第五次循环:
tag = tag * 10 + temp % 10; 》》》tag = 1232 * 10 + 1 % 10 》》》12320 + 1 = 12321 //tag=12321
temp = temp / 10; 》》》 temp = 1 / 10 》》》 0 // temp = 0

temp = 0 > 0 False
循环结束

此时tag 的值为12321 ,等于输入的 n 的值12321,故它是一个回文数

 

 

再来看看错误的打开方式

举个栗子,例如我们输入:123
123 >= 0 && 123 < 100000 成立,进入

temp = 123 > 0 True
第一次循环:
tag = tag * 10 + temp % 10; 》》》 tag = 0 * 10 + 123 % 10 》》》 0 + 3 = 3 // tag = 3
temp = temp / 10; 》》》 temp = 123 / 10 》》》 12 // temp = 12

temp = 12 > 0 True
第一次循环:
tag = tag * 10 + temp % 10; 》》》 tag = 3 * 10 + 12 % 10 》》》 30 + 2 = 32 // tag = 32
temp = temp / 10; 》》》 temp = 12 / 10 》》》 1 // temp = 1

temp = 1 > 0 True
第一次循环:
tag = tag * 10 + temp % 10; 》》》 tag = 32 * 10 + 1 % 10 》》》 320 + 1 = 321 // tag = 321
temp = temp / 10; 》》》 temp = 1 / 10 》》》 0 // temp = 0

temp = 0 > 0 False
循环结束

你看,此时我们得到tag的值为321,而输入的n的值为123,很显然这不是一个回文数

 

通过倒序来判断,如果与用户输入的值一致,那它是回文数,否则不是

 

以上是关于题目:从键盘输入一个不超过五位的整数,判断它是否为回文数,例如12321是一个回文数的主要内容,如果未能解决你的问题,请参考以下文章

编写程序,输入一个不多于5位的正整数,要求:(1)输出它是几位数; (2)分别输出每一位数字?

2.给一个不多于5位的正整数,要求: ①求出它是几位数; ②分别输出每一位数字 ③按逆序输出各位数字。

java例题_24 逆向输入数字

Python识别同构数

给定一个不多于5位的正整数,要求:① 求它是几位数;② 分别打印出每一位数字;③ 按逆序打印出各位数

从键盘输入一个整数,判断是否为回文数