Online Compiler C

#include <stdio.h> int main(){ const int N=10; int A[N],B[N]; int i,m=0,j; for(i=0;i<N;i++){ scanf("%d",&A[i]); } for(i=0;i<N;i++){ int c=0; for(j=0;j<N;j++){ if (A[i]==A[j]) c++; } if (c==1){ B[b]=A[i]; b=b++;} for (i=0;i<b;i++){ printf("%d",B[i]); } } return 0; }
这段代码的目的是从输入的10个整数中找出只出现一次的元素,并存入另一个数组B中输出。但代码中存在几个问题。

- 变量b在使用前没有声明和初始化,导致编译错误。你需要先声明b并给它一个初始值。
- 在循环内部,你使用了b++和B[b]来赋值,但b的自增方式有误。b=b++是未定义行为,应该使用简单的b++或++b。
- 输出B数组的循环被放在了外层for循环内部,这会导致每次外层循环迭代时都尝试输出当前B中的内容,而不是在所有元素处理完后统一输出。你应该把输出循环移到所有处理完成之后。