这段代码试图判断一个整数中是否有重复的数字。它使用数组 `ch` 来标记每个数字(0-9)是否出现过。但代码存在几个问题。
- 数组 `ch` 没有被初始化。在 C 语言中,局部数组的初始值是不确定的,所以 `if(ch[a%10])` 会读取垃圾值,导致判断错误。`={0}` 会将数组所有元素初始化为 0,不是只初始化第一个。
- 循环条件 `while(a>=10)` 只处理了数字个数大于等于2的情况,但输入的数字本身可能小于10,此时循环不会执行,直接输出 "NO",这是正确的。但循环内部没有更新 `a` 的值,导致死循环。
- 提示1:数组初始化 `={0}` 会将所有元素设为 0,这是正确的做法。但你需要检查循环中 `a` 的值是否在变化,否则循环会无限执行。
- 提示2:循环中每次取出最低位数字后,应该去掉这一位,例如用 `a = a / 10`,否则 `a` 不变,循环永远不会结束。