大一学生刚学到结构体,求解答

写着写着突然不知道要干嘛了,感觉不符合题意,我该怎么写才能像给出的图示一般?

img

img

img

供参考:

#include <stdio.h>
#define N 5
#define M 3
struct student{
     int  num;
     char name[12];
     int score[M];
}stu[N];
int main()
{
    void print(struct student stu[]);
    int i,j;
    for (i = 0;i < N; i++)
    {
        printf("请输入第%d个学生的信息\n",i+1);
        printf("学号:");
        scanf("%d", &stu[i].num);
        printf("姓名:");
        scanf("%s", stu[i].name);
        for (j = 0;j < M; j++)
        {
            printf("第%d门成绩:",j+1);
            scanf("%d", &stu[i].score[j]);
        }
        printf("\n");
    }
    print(stu);
    return 0;
}

void print(struct student stu[])
{
    int i,j;
    printf("%6s%6s%6s%6s%6s\n","学号  ", "姓名  ", "成绩1 " ,"成绩2 " ,"成绩3 ");
    for (i = 0;i < N; i++){
        printf("%-6d%-6s", stu[i].num, stu[i].name);
        for (j = 0;j < M; j++)
            printf("%-6d", stu[i].score[j]);
        printf("\n");
    }
}

仅供参考!谢谢!

img

#include <stdio.h>
#define M 5
#define N 3

struct student
{
    int num;
    char name[20];
    float score[N];

} stu[M];

int main(int argc, char *argv[])
{
    void print(struct student stu[]);
    int i, j;
    for (i = 0; i < M; i++)
    {
        printf("请输入第%d个学生信息\n", i + 1);
        printf("学号:");
        scanf("%d%*c", &stu[i].num);

        printf("姓名:");
        scanf("%19[^\n]s", stu[i].name);
        for (j = 0; j < N; j++)
        {
            printf("第%d门成绩:", j + 1);
            scanf("%f", &stu[i].score[j]);
        }
        puts("");
    }

    print(stu);
    return 0;
}

void print(struct student stu[])
{
    printf("学号      姓名      成绩1     成绩2    成绩3\n");
    for (int i = 0; i < M; i++)
    {
        printf("%d%12s", stu[i].num, stu[i].name);
        for (int j = 0; j < N; j++)
        {
            printf("%10.1f", stu[i].score[j]);
        }
        puts("");
    }
}