在线编译器 C

#include <stdio.h> int main() { int n; scanf("%d", &n); int save_n = n; int digit = 0; while (digit <= 9) { n = save_n; int counter = 0; while (n > 0) { int curent_digit = n % 10; if (digit == curent_digit) { counter++; } n = n / 10; } if (counter >= 2) { printf("YES\n");} else{ printf("NO\n"); } return 0; } return 0; }
这段代码试图判断一个整数中是否包含某个重复出现至少两次的数字。但代码的逻辑和结构有一些问题。

代码的主要思路是:用外层循环遍历数字0到9,对于每个数字,在内层循环中统计它在原数中出现的次数。如果某个数字出现次数大于等于2,就输出YES,否则输出NO。

- 问题在于,外层循环只执行了一次就结束了,因为`return 0;`被放在了循环内部。这导致程序只检查了数字0,然后立即退出。
- 另外,题目可能只需要判断是否存在任意一个重复数字,而不是对每个数字都输出一次结果。目前的输出方式会为每个数字输出一行YES或NO,可能不符合预期。

- 检查`return 0;`的位置,它应该在整个循环结束后才执行,而不是在循环内部。
- 思考一下:如果只需要判断是否存在重复数字,那么一旦发现某个数字出现次数≥2,就可以立即输出YES并结束程序,而不需要继续检查后面的数字。