Онлайн компилятор C

#include <stdio.h> int main() { int n, m = 0, a, b=-1; scanf("%d", &n); while (n != 0) { a = n % 10; if (a == b) { m = 1; break; } b = a; n = n / 10; } if (m == 1) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是判断一个整数中是否存在相邻的相同数字。它从右向左逐位检查,如果发现某一位和它右边的一位(即前一次循环中保存的数字)相等,就输出YES,否则输出NO。

- 变量b的初始值设为-1,这可能导致问题。因为如果输入的数字中包含数字-1(实际上不可能),或者数字中某一位恰好等于-1,逻辑会出错。更合理的初始值应该是一个不可能出现在数字中的值,比如10或更特殊的标记。
- 代码只检查了相邻两位是否相等,但题目要求可能是检查任意位置是否有重复数字?需要确认题目具体需求。如果只是检查相邻重复,当前逻辑基本正确,但初始值问题需要修正。