Online Compiler 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个整数,然后分别输出其中的正数和负数。但代码中存在逻辑错误,导致输出结果不符合预期。

主要问题在于循环嵌套结构不正确。你在遍历数组A的同时,在同一个循环内部又嵌套了打印B和C数组的循环。这会导致每次遇到一个负数时,都会从头开始打印当前已存储的所有正数和负数,而不是在所有元素处理完毕后再统一输出。

- 检查循环的括号配对:当前代码中,第二个for循环的大括号范围可能没有正确包含所有需要的语句。打印B和C的循环应该放在处理完所有A数组元素之后,而不是嵌套在判断负数的if语句内部。
- 思考程序的执行流程:应该先完成所有数据的读取和分类存储,最后再分别输出B和C数组中的内容。