题目:从键盘输入一个不超过五位的整数,判断它是否为回文数,例如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位的正整数,要求: ①求出它是几位数; ②分别输出每一位数字 ③按逆序输出各位数字。