Онлайн компилятор C

#include <stdio.h> int main(){ const int N=10; int A[N],B[N],C[N]; int i,b=0,c=0; for(i=0;i<N;i++){ scanf("%d",&A[i]); } for(i=0;i<N;i++){ if(A[i]>0){ B[b]=A[i]; b++; } if(A[i]<0){ C[c]=A[i]; c++;} } for (i=0;i<b;i++){ printf("%d",B[i]); } for (i=0;i<c;i++){ printf("%d",C[i]); } return 0; }
这段代码的功能是:读取10个整数,将正数存入数组B,负数存入数组C,然后先输出所有正数,再输出所有负数。

代码整体思路正确,但存在一个逻辑问题:题目可能要求将正数和负数分别按原顺序输出,但你的代码在输出时没有在数字之间添加空格或换行,导致输出结果会连在一起,难以区分每个数字。

- 检查输出格式:`printf("%d",B[i])` 没有添加分隔符,可以考虑在数字之间加一个空格或换行,让输出更清晰。
- 注意数组边界:虽然你用了b和c来计数,但B和C的大小都是10,如果正数或负数超过10个会越界,不过题目中N=10且输入10个数,所以这里不会出问题。