加油啊兄嘚
我们先来分析题目,把所有的情况都想一遍。x如果是0~9,那他直接就是回文数;x如果是负数,因为负号的存在,那他怎么也不可能是回文数;x如果>9,就需要我们进一步分析了,这也是本段代码的核心所在……
这个分析是大脑风暴的必须过程,任何一个算法题目都需要认真思考后再落笔。
整体代码框架如下哈:
输入一个x:
if () //判断输入的x是否是符合我们规定的整数,不要带小数点,也不要是越界的超大数
{
if(x < 0)
{
return false; //如果是负数直接返回,不用进一步判断
}
else if ( 0 <= x <= 9)
{
return true; //如果是0~9直接返回,不用进一步判断
}
else
{
//核心代码:
}
}
else
{
//输出:您的输入有误!程序结束。
}
核心代码如下:
//核心代码
int result = 0;
int a = 0;
int box = x; //box变量用于暂存初始x值
while (x > 0){
a = x % 10; //模运算取得末尾数字
result = a + result * 10; //关键:末尾数字a+上一次循环结果result再乘10组成新的数,每次循环中刷新一次result
x = x / 10; //在下一次循环之前赶紧把本次x的末尾数去掉,每次进入循环的就是一个崭新的x
}
return box == temp;
合并后:
//我们把上面的合并后:
if () //判断输入的x是否是符合我们规定的整数,不要带小数点,也不要是越界的超大数
{
if(x < 0)
{
return false;
}
else
{
int result = 0;
int box = x; //把x先赋值给box用于最终判断
while (x > 0){ //因为x每轮循环都在不断变小、变小,直至最后=0,0的时候不满足该条件就跳出循环了
result = x % 10 + result * 10;
x = x / 10;
}
return box == result; //result每轮循环都在变,最终会变成倒序数
}
}
else
{
//输出:您的输入有误!程序结束。
}
ps.本篇文章只针对特定0基础小白同学,如有错误还请评论区指正。