在线编译器 C

#include <stdio.h> int main() { int n, i, save_n, now; scanf("%d", &n); save_n = n; for (i = 0; i <= 9; i++) { n = save_n; int count_digit = 0; while (n > 0) { now = n % 10; n /= 10; if (now == i) { count_digit++; } if (count_digit >1 ) break; } printf("YES"); } printf("NO"); return 0; }
这段代码试图判断一个整数中是否包含重复的数字,但逻辑有误。程序对每个数字0-9分别统计出现次数,如果某个数字出现超过一次就打印"YES",但循环结束后又打印"NO",导致输出混乱。

- 你的循环结构有问题:每次检测到重复数字时立即打印"YES",但循环结束后还会打印"NO"。应该用一个标志变量记录是否找到重复,循环结束后根据标志决定输出一个结果。
- 当前代码中,`break`只跳出了内层`while`循环,但外层`for`循环会继续执行,导致可能多次打印"YES"。你需要思考如何让程序在找到重复后立即结束整个判断过程。