动画制作中,敬请期待!
小海豚小航正在海底探索回文石板的奥秘...
动画完成后将在这里播放,带你一起发现回文的秘密!
💡 你可以先点击"返回主页",进入"课堂项目"开始编程学习!
小海豚的海底探险 | 趣味C++课堂
小海豚小航的海底探险故事
小海豚小航正在海底探索回文石板的奥秘...
动画完成后将在这里播放,带你一起发现回文的秘密!
💡 你可以先点击"返回主页",进入"课堂项目"开始编程学习!
填写代码空缺,实现回文数判断和查找功能!
本节课3大模块、12个核心知识点,标注重点
回文是指从前往后读和从后往前读完全一样的文字、数字或符号。回文体现了对称美。
一个正整数,如果从左向右读和从右向左读都是一样的,就是回文数。
第一位和最后一位相同,第二位和倒数第二位相同,以此类推。一位数都是回文数。
回文数字、回文文字、回文诗句、回文英语单词、回文日期(如20200202)。
n % 10 得到 n 除以10的余数,也就是 n 的最后一位数字。
n / 10 得到 n 除以10的商(整数部分),也就是去掉 n 的最后一位。
sum = sum * 10 + n % 10。sum*10让之前的数字左移一位,n%10获取新的最后一位,加在一起完成翻转。
while(n > 0) { sum=sum*10+n%10; n=n/10; } 当n变为0时,所有位都已翻转完毕。
for(int i=a; i<=b; i++) 遍历范围内每个数,对每个数进行回文数判断。注意条件是i<=b(包含b)。
cnt变量初始化为0,每发现一个回文数就cnt++,循环结束后cnt就是回文数的总个数。
对每个数i,先用n=i复制一份用于翻转,sum=0存储翻转结果,m=i保存原数。while循环翻转n,最后if(sum==m)判断是否是回文数。
在循环中用变量跟踪表记录每一步n、sum、m的值变化,帮助理解翻转过程和排查错误。
① 回文数的定义(正反读完全一样的数)
② 取余运算%(n%10获取最后一位)
③ 数字翻转核心公式(sum=sum*10+n%10, n/=10)
④ 回文数判断逻辑(翻转后与原数比较,保存原数m)
⑤ for循环遍历查找(遍历范围,逐个判断,计数输出)
5道单选题 + 3道判断题,提交后查看答案和解析
121从左往右读是121,从右往左读也是121,正反读完全一样,所以是回文数。123反读是321,1234反读是4321,100反读是001(即1),都不是回文数。
% 是取余运算符,n % 10 得到n除以10的余数,也就是n的最后一位数字。例如123 % 10 = 3(最后一位是3)。去掉最后一位用的是 n / 10(整除)。
bool类型是布尔类型,只有两个值:true(真)和 false(假)。bool类型通常用于表示"是"或"不是"的判断结果,在if条件判断中经常用到。
这是回文数判断中最容易出错的地方!在while循环中,n = n / 10 会不断去掉n的最后一位,循环结束后n变成了0。如果直接用sum == n比较,就会变成sum == 0,所有数都会判断为非回文数。所以必须在循环前用m = n保存原数,循环结束后用sum == m比较。
for循环从i=a开始,到i<=b结束,每次i增加1。当a=1, b=100时,i从1到100,一共执行100次。公式是:执行次数 = b - a + 1 = 100 - 1 + 1 = 100次。注意条件是 i <= b(包含b),如果是 i < b 就只有99次了。
这正是回文数的定义!一个正整数,如果从左向右读和从右向左读都是一样的,就是回文数。例如121、1001、12321都是回文数。
正确!sum * 10 的作用是把之前已经翻转好的数字"左移一位"(升高一位),腾出个位来放新取出来的最后一位。例如sum=3,乘以10变成30,然后加上n%10=2,得到32。这样3就从个位升到了十位,新的2放在了个位,完成翻转。
一位数(1-9)都是回文数!因为一位数只有一位数字,从左往右读和从右往左读都是它本身,完全一样。例如5,正读是5,反读也是5,所以5是回文数。在1-100范围内,一位数1-9加上两位数的11,22,...,99,一共18个回文数。