Online Compiler C

#include <stdio.h> int main() { int n; scanf("%d",&n); while(n>=0){ if (n%10==n/10%10) { printf("YES"); return 0; } n=n/10;} printf("NO"); return 0; }
这段代码的功能是:读入一个整数n,然后检查这个数的十进制表示中,是否存在相邻的两位数字相等。如果存在,就输出"YES"并结束程序;如果遍历完所有位都没有找到,就输出"NO"。

代码的思路是:通过不断除以10来去掉最后一位,同时比较当前最后一位(n%10)和新的最后一位(n/10%10)是否相等。

- 你的循环条件是 `while(n>=0)`,但n在除以10的过程中最终会变成0,而0也是非负数,所以循环会一直执行到n变成0。但n=0时,`n%10`和`n/10%10`都是0,会导致误判为"YES"。你应该考虑循环何时应该停止,比如当n只剩下一位数时就不需要再比较了。
- 另外,当n是负数时,循环条件`n>=0`会直接不成立,但题目可能只考虑非负整数?如果输入负数,你的程序会直接输出"NO",这可能需要确认是否符合要求。