c语言基础问题,可是提交作业一直过不去,希望大佬们能帮帮忙

任务描述

某次考试后,老师需要知道有多少人挂科了,哪些人挂科了。

输入

第一行一个正整数n,表示本次考试人数。0<n≤1000。
其后n个非负整数,依次表示学号为1,2,3,...,n号的学生的成绩,成绩取值范围[0,100]。

输出

第1行,输出不及格人数。
第2行,依次输出不及格的学生的学号,学号之间用空格分隔。最后一个不及格学生的学号之后没有空格。如果全部及格了,则输出no fail。

输入举例
10
90 50 85 59 64 73 87 68 13 95

输出举例
3
2 4 9

这是我编的:
#include
int main()
{
int i,j,n;
int a[10];
int num;
int count=0;
num=0;
j=1;
scanf("%d",&n);

for(i=0; i<n; i++)
{
    scanf("%d",&a[i]);
}
for(i=0; i<n; i++)
{
    if(a[i]<60)
        num+=1;
    if(i==n-1)
        printf("%d\n",num);
}
for(i=0; i<n; i++)
{
    if(a[i]<60)
    {
        count++;
        if(count!=1)
            printf(" ");
        printf("%d",j);
        if(count==0)
    printf("no fail");
    }

  j++;
}

return 0;

}

1,你定义的数组长度够么,人数可是 <=1000, 可以考虑使用不定长数组,有多少人申请多长的数组
2,学号是不是就是对应数组的下标,你打印 j 是什么意思
3,打印第一个num为什么放在循环内
以上问题需要你思考解决,其实最好的方法是你自己编译后运行测试,程序是调试出来的