Online Compiler C

#include <stdio.h> int main() { int a; scanf("%d", &a); int n = a % 10; while (a != 0) { a=a/10 while(a!=0){ if(n==a%10){printf("YES");return0;} else a=a/10 } n = a % 10; } printf("NO"); return 0; }
这段代码试图判断一个整数中是否有重复的数字。但代码存在逻辑和语法问题,导致无法正确运行。

- 第8行和第12行缺少分号,这是语法错误,会导致编译失败。
- 内层while循环会不断将a除以10,但外层循环也在修改a,导致变量a的值被过度消耗,无法正确遍历所有数字位。
- 变量n只在外层循环开始时更新一次,但内层循环中a的值已经改变,导致比较逻辑混乱。

- 检查代码中所有语句是否以分号结尾,特别是第8行和第12行。
- 思考如何在不破坏原始数字的情况下,分别提取每一位数字进行比较。通常可以保存原始值,或者使用临时变量来遍历数字位。