Online Compiler C

#include <stdio.h> int main() { int n, i=0, cymma, save_n ,m; scanf ("%d" ,&n); while( i <= 9){ save_n = n; cymma=0; while(n!=0){ m=n%10; if(m == cymma ){ cymma++; } n=n/10; if(cymma>=2){ printf("YES"); } } i++; } print("NO"); return 0; }
这段代码试图判断一个整数中是否包含两个相同的数字,但逻辑上有问题。代码使用了两个嵌套的while循环,外层循环固定执行10次,内层循环遍历数字的每一位。变量cymma被用来计数,但它的初始化和更新方式不正确,导致无法正确判断是否有重复数字。

- 外层循环`while(i <= 9)`固定执行10次,这没有意义。你应该只遍历一次数字的每一位,而不是重复10次。思考一下如何用一个循环来检查每一位数字。
- 变量`cymma`的用途不清晰。你似乎想用它来记录某个数字出现的次数,但每次遇到数字`m`时,你只检查`m == cymma`,这只能判断数字是否等于当前计数器的值,而不是判断该数字是否出现过。你需要一个方法来记录每个数字(0-9)出现的次数,比如使用一个数组来计数。