码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2021-05-24 11:46:30      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:变量   对比   等于   基础   否则   能力   err   题目   循环   

这题考察的是读者对于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是一个回文数

标签:变量   对比   等于   基础   否则   能力   err   题目   循环   

原文地址:https://www.cnblogs.com/Maackia/p/14772499.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!