这段代码试图判断一个整数中是否有相邻的两位数字相同。它从右向左检查数字,如果发现相邻两位相等就输出YES并结束,否则最终输出NO。
代码中存在一些逻辑和语法问题:
- 循环条件 `n>=10` 意味着当数字只剩一位时就会退出循环,此时会直接输出NO。但问题在于,如果数字本身只有一位,按题意应该输出什么?另外,循环内检查的是当前最低位和次低位,但循环每次只去掉最低位,这样会漏掉一些相邻对。
- 在循环内部,`n=n/10;` 后面直接跟了 `{printf("NO");};`,这个花括号位置不对,导致每次循环都会输出NO,而不是在循环结束后输出一次。
提示:
- 思考一下,如果数字是12321,你的代码能检查到中间的“32”这对相邻数字吗?检查的顺序和范围可能需要调整。
- 注意花括号的位置,确保“NO”只在所有相邻对都不相等时输出一次,而不是在循环内部每次判断后都输出。