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

#include <stdio.h> int main() { int arr[10]; int c[10]; int i, cnt=0; for(i=0;i<10;i++) { scanf("%d", &arr[i]); } for(i=0;i<10;i++) { int t=(arr[i]/10)%10; if(t==0) { c[cnt]=arr[i]; cnt++; } } for(i=0;i<cnt;i++) { printf("%d ", arr[i]); } return 0; }
这段代码的目的是从输入的10个整数中,选出十位数字为0的数,并输出这些数。但代码中存在一个逻辑错误。

- 在最后的输出循环中,你打印的是 `arr[i]`,但应该打印的是 `c[i]`,因为筛选出的数存储在数组 `c` 中,而不是 `arr` 中。
- 另外,注意 `(arr[i]/10)%10` 这个表达式:对于负数,取模运算的结果可能不是预期的十位数字。如果输入可能包含负数,需要额外处理。