Online Compiler 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) printf("YES"); else printf("NO"); } return 0; }
这段代码试图判断一个整数中每个数字(0-9)是否恰好出现一次,但存在逻辑错误。

- 代码中 `if(count_digit=1)` 使用了赋值运算符 `=` 而不是比较运算符 `==`,这会导致条件永远为真,输出始终是 "YES"。
- 循环会为每个数字(0到9)分别输出一次 "YES" 或 "NO",而不是对整个数字给出一个统一的判断结果。

- 检查 `if(count_digit=1)` 这一行,思考赋值和比较的区别。
- 考虑如何在整个循环结束后,根据所有数字的出现次数是否都满足条件,只输出一次结果。