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

#include <stdio.h> int main() { const int N = 10; int A [N],i,c; int count=0; for (i=0;i<N;i++) {scanf("%d",&A[i]); } for (i=0;i<N;i++){ if ((A[i]/10)%10==0){ int B[count]=A[i] count++; } } for (i=0;i<count;i++) { printf("%d", B[count]); } return 0; }
这段代码试图从10个整数中找出十位数字为0的数,并存入新数组B中输出。但代码有几个问题。

- 第10行声明数组B时使用了变量count,但C语言中数组大小必须是编译时常量,不能使用变量。同时这一行缺少分号。
- 第15行输出时使用了B[count],但count是数组长度,应该用循环变量i来访问每个元素。
- 逻辑上,条件(A[i]/10)%10==0判断的是数字的十位是否为0,但需要确认这是否符合你的原意。例如数字5的十位是0,但5/10=0,0%10=0,也会被选中。

- 考虑如何在不使用变长数组的情况下存储符合条件的数。可以先用一个固定大小的数组,或者先遍历一遍统计个数再分配空间。