代码显示只能输入两组数据,请大家帮我看看问题出在哪儿

描述:
有n个学生,每个学生的数据包括学号、姓名和3门课程的成绩,
要求输出平均成绩高于90分以上(包括90分)或全部课程成绩均在85分以上(包括85分)的学生信息(包括学号和姓名),
如果没有符合条件的,则输出“No”。
输入:
有n+1行,第1行有1个整数,即学生数n;接下来有n行,每行有7个数据项,分别为学号、姓名和3门课程成绩,数据项之间用空格隔开。
输出:
有多行,每行包含2个数据项,即学号、姓名,数据项之间用空格隔开。
提示:
学生数n大于1小于等于20,“学号”是4位整数,“姓名”为不超过8个字符的字符串,“成绩”为0~100。


#include<stdio.h>

struct student
{
    int num;
    char name[8];
    double score[3];
}stu[20];

int main()
{
    int n = 1, i, j, k, a = 0;
    //学生数输入 
    scanf("%d", &n);
    
    //数据输入 
    for(i=0; i<n; i++)
    {
        scanf("%d", &stu[i].num);
        scanf("%s",  stu[i].name);
        for(j=0; j<3; j++)
            scanf("lf", &stu[i].score[j]);
    }
    
    //数据处理
    int sum;
    double avg[n];
    for(i=0; i<n; i++)
    {
        for(j=0; j<3; j++)
        {
            sum += stu[i].score[j];
            for(k=0; k<n; k++)
            {
                avg[k] = (stu[i].score[j])/n;
                if( avg[k] >= 90 && stu[i].score[j]>=85 )
                {
                    printf("%d %s", stu[i].num, stu[i].name);
                    a = 1;
                }
            }
        }
    }
    if(a == 0) printf("No");
    
    return 0;
}

img

测试数据为:
3
1001 Make 86 91 89
1002 Linda 78 78 80
1003 Jone 90 67 71
1001 Make

5
1011 Kitty 66 71 79
1012 Lena 78 79 90
1013 Marry 83 77 78
1014 Jone 91 89 92
1015 Make 85 85 86
1014 Jone
1015 Make

修改如下,供参考:

#include<stdio.h>
#define N 21
struct student
{
    int num;
    char name[8];
    double score[3];
    double avg;
}stu[N];
int score_85(struct student stu_t)
{
    return stu_t.score[0] >= 85 && stu_t.score[1] >= 85 
                                && stu_t.score[2] >= 85;
}
int main()
{
    int n = 1, i, j, k, a = 0;
    scanf("%d", &n);     //学生数输入 
    for (i = 0; i < n; i++)//数据输入 
    {
        scanf("%d %s", &stu[i].num, stu[i].name);
        for (j = 0, stu[i].avg = 0; j < 3; j++) {
            scanf("%lf", &stu[i].score[j]);
            stu[i].avg += stu[i].score[j];
        }
        stu[i].avg /= 3;//数据处理
    }
    
    //int sum;
    //double avg[n];
    for (i = 0; i < n; i++)
    {
        //for (j = 0; j < 3; j++)
        //{
            //sum += stu[i].score[j];
            //for (k = 0; k < n; k++)
            //{
            //    avg[k] = (stu[i].score[j]) / n;
                if (stu[i].avg >= 90 || score_85(stu[i])) //stu[i].score[j] >= 85)
                {
                    printf("%d %s\n", stu[i].num, stu[i].name);
                    a = 1;
                }
            //}
        //}
    }
    if (a == 0) printf("No");
    return 0;
}