这段代码的功能是判断一个整数中是否存在相邻的相同数字。它从用户输入一个整数开始,先处理负数(取绝对值),然后检查数字的每一位,如果发现某一位和它右边的下一位相同,就输出"YES"并结束程序,否则输出"NO"。 - 你的循环条件 `while(num>=10)` 会在数字只剩一位时退出,但此时你只比较了当前最低位和次低位,没有比较更高位的相邻数字。例如输入 `121`,第一次循环比较个位1和十位2,不相等;然后 `num` 变成 `12`,第二次循环比较个位2和十位1,还是不相等,循环结束输出"NO",但实际数字中十位2和百位1并不相邻,所以结果正确。但考虑输入 `112`,第一次循环比较个位2和十位1,不相等;`num` 变成 `11`,第二次循环比较个位1和十位1,相等,输出"YES",正确。所以这个逻辑对于从低位向高位比较是可行的,但要注意:你的比较方式只检查了相邻的两位,而 `num` 每次去掉最后一位,实际上是在检查所有相邻对,所以逻辑本身没有大问题。 - 一个潜在问题是:当输入是 `0` 时,`num` 为0,小于10,直接输出"NO",但0只有一位,没有相邻数字,所以正确。但如果是 `-10`,取绝对值后为10,循环中比较个位0和十位1,不相等,输出"NO",正确。所以代码基本正确,但你可以思考一下:如果输入是 `-101`,取绝对值后为101,循环中比较个位1和十位0,不相等;然后 `num` 变成10,比较个位0和十位1,不相等,输出"NO",但实际数字中百位1和十位0相邻且不同,十位0和个位1相邻且不同,所以正确。因此代码功能上没有问题。