这段代码的功能是判断一个整数中是否有重复的数字。它先取绝对值,然后逐位检查每个数字是否出现过,如果发现重复就输出YES,否则输出NO。 - 代码对输入0的处理是直接输出NO,但0本身只有一位数字,确实没有重复,这个逻辑是正确的。 - 注意:当输入为负数时,代码用abs取绝对值,但负数中的负号本身不是数字,所以只处理数字部分是正确的。不过,如果输入是像-123这样的数,它只检查数字部分,不会把负号当作数字,这符合题意。 - 提示1:考虑一下,如果输入的数字很大,比如超过int范围,会发生什么?scanf读取int时可能会溢出,但题目通常不会测试这种情况,不过你可以思考如何更安全地处理输入。 - 提示2:代码中seen数组的大小是10,因为十进制数字只有0-9,这是合理的。但注意,如果输入是0,代码直接返回NO,而while循环不会执行,这没问题。但你可以想想,如果输入是像100这样的数,代码会正确检测到重复的0吗?当前逻辑是逐个数字检查,遇到重复就返回,所以对于100,先检查1(未重复),再检查0(未重复),再检查0(重复),会输出YES,这是正确的。