在线编译器 C

#include<stdio.h> int main() { int arr[10]; int res[10]; int a=0; int i; int b; for(i-0;i<10;i++){ scanf("%d",&arr[i]); } for(i=0;i<10;i++){ b=(arr[i]/10)%10; if(b==0){ res[i]=arr[i]; a++; } } for(i=0;i<a;i++){ printf("%d ",res[i]); } return 0; }
这段代码的目的是从输入的10个整数中,筛选出十位数字为0的数,并存储到另一个数组中,最后输出这些数。

代码中存在一个明显的错误:第一个for循环的初始化部分写成了 `i-0`,而不是 `i=0`。这会导致循环无法正确执行,因为 `i-0` 是一个表达式,不会改变 `i` 的值,而 `i` 未初始化,循环行为不可预测。

- 检查第一个for循环的初始化部分,确保使用赋值运算符 `=` 而不是减号 `-`。
- 注意筛选逻辑:`(arr[i]/10)%10` 用于获取十位数字,但需要确认这个计算是否正确。例如,对于负数或不同位数的数,结果可能不符合预期。