在线编译器 C

#include <stdio.h> int main() { int a,ch[11];//tell me:ch[] need or not init??? scanf("%d",&a); while(a>=10) { if(ch[a%10]) { printf("YES"); return 0; } ch[a%10]=1; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复的数字,但存在几个问题。

- 数组 `ch` 没有被初始化,它的元素值是随机的,这会导致判断条件 `if(ch[a%10])` 的行为不可预测。
- 循环条件 `while(a>=10)` 只处理了至少两位数的数字,但循环内部没有更新 `a` 的值,所以如果输入的数字大于等于10,循环会无限执行。
- 当输入的数字小于10时,循环不会执行,直接输出"NO",但一位数本身没有重复数字,这个结果是对的,但逻辑上不够完整。

- 提示1:数组在使用前需要初始化,否则里面的值是垃圾值。想想如何让数组的所有元素都变成0。
- 提示2:循环中需要更新 `a` 的值,否则循环无法结束。思考如何去掉数字的最后一位。