Online Compiler C

#include <stdio.h> int main() { int i, m=0, n=0; scanf("%d", &i); while (i != 0) { if (i % 10 == 9) { m = i % 10; i = i / 10; while (i != 0) { if (i % 10 == 9) { n = i % 10; break; } i = i / 10; } if (n == m) printf("NO"); break; } else printf("YES"); i = i / 10; } return 0; }
这段代码试图判断一个整数中是否包含两个连续的9。但逻辑上有问题,导致输出结果不正确。

- 代码中 `m` 和 `n` 都赋值为 `i % 10`,即数字9本身,所以 `n == m` 永远成立,这无法正确判断连续关系。
- 外层循环在找到第一个9后立即进入内层循环,但内层循环会继续处理剩余数字,而外层循环的 `break` 会提前结束整个程序,导致无法检查所有可能的情况。

建议你重新思考如何检查连续的两个9:关键在于比较相邻的两个数字,而不是单独判断它们是否等于9。同时注意循环的流程控制,避免提前退出。