Онлайн компилятор C

#include <stdio.h> int main() { int n, a, i = -1, q1, q2, q3, q4, q5, q6, q7, q8, q9, q0; scanf("%d", &n); while (n != 0) { a = n % 10; if (a == 0) q0++; else if (a == 1) q1++; else if (a == 2) q2++; else if (a == 3) q3++; else if (a == 4) q4++; else if (a == 5) q5++; else if (a == 6) q6++; else if (a == 7) q7++; else if (a == 8) q8++; else if (a == 9) q9++; if (q0 == 2 || q1 == 2 || q2 == 2 || q3 == 2 || q4 == 2 || q5 == 2 || q6 == 2 || q7 == 2 || q8 == 2 || q9 == 2) { i = 1 break; } n = n / 10; } if (i == 1) printf("YES"); else printf("NO"); return 0; }
这段代码试图判断一个整数中是否包含重复的数字(即是否有某个数字出现至少两次)。但代码中存在几个问题。

首先,变量 `q0` 到 `q9` 没有被初始化,它们的初始值是未定义的,这会导致计数结果不可预测。其次,`i = 1 break;` 这一行缺少分号,语法错误。

- 在使用变量前,需要给它们赋一个明确的初始值,比如0。
- 检查 `i = 1 break;` 这一行的语法,确保语句正确结束。