Online Compiler C

#include <stdio.h> int main() { int a[10]; int b[]; for (int i = 0; i < 10; i++) { scanf("%d", &a[i]); } for(int i=0;i<10;i++){ if(a[i]%100<10){ b[i]=a[i]; } } for (int i = 0; i < 10; i++) { printf("%d ", b[i]); } return 0; }
这段代码试图从输入的10个整数中,筛选出那些最后两位数字小于10的数,并存入另一个数组b中,最后输出b数组的内容。

代码中存在一个关键问题:数组b在声明时没有指定大小,这在C语言中是不允许的。你需要为b分配一个确定的大小。

- 数组b声明时缺少大小,编译器无法知道需要分配多少内存。你可以考虑先统计符合条件的元素个数,或者直接使用与a相同的大小。
- 另外,如果b中某些位置没有被赋值,输出时会出现未初始化的值。你需要确保只输出实际存入的元素,而不是整个数组。