关于结构体代码的问题

问题遇到的现象和发生背景

题目如下:

img


输入:
Liu Mengmeng
0821131666666
88 90 93 91 85
输出:
Name:Liu Mengmeng
ID:0821131666666
Score:93 91 90 88 85
average:89.40 total:447

问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>

struct student
{
    char name[20];
    char id[20];
    int score[5];
    double average;
    int total;
}student;

int main()
{
    struct student;
    int i,sum=0,j,temp;
    double average;
    scanf("%s",student.name);
    scanf("%d",student.id);
    for(i=0;i<5;i++)
    {
        scanf("%d",&student.score);
    }
    for(i=0;i<5;i++)
    {
        for(j=0;j<5-1-i;j++)
        {
            if(student.score[j]<student.score[j+1])
            {
                temp=student.score[j];
                student.score[j]=student.score[j+1];
                student.score[j+1]=temp;
            }
        }
    }
    for(i=0;i<5;i++)
    {
        student.total =student.total +student.score[i];
    }
    student.average =student.total /5.0;
    printf("Name:%s\n",student->name );
    printf("ID:%d\n",student->id );
    printf("Score:");
    for(i=0;i<5;i++)
    {
        if(i==4)
        {
            printf("%d\n",student->score[i]);
        }
        else
        {
            printf("%d ",student->score [i]);
        }
    }
    printf("average:%.2lf total:%d\n",student->average ,student->total );
    return 0;
}

运行结果及报错内容

编译时出错,出现

img


这样的问题,请问是哪里出现问题?

->是给指针用的。main中第一句可以删除了。

输出用指针

struct student *stu;
stu=&student;
printf("Name:%s\n",stu->name );

修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>

struct student
{
    char name[20];
    char id[20];
    int  score[5];
    double average;
    int total;
}student;

int main()
{
    struct student* ptr = &student; //修改
    int i,sum=0,j,temp;
    double average;
    scanf("%[^\n]",student.name);//scanf("%s",student.name); 修改
    getchar(); //修改
    scanf("%s",student.id); //scanf("%d",student.id); 修改
    getchar(); //修改
    for(i=0;i<5;i++)
    {
        scanf("%d",&student.score[i]);
        //scanf("%d",&student.score); 修改
    }
    for(i=0;i<5 - 1;i++)  //for(i=0;i<5;i++)  修改
    {
        for(j=0;j<5-1-i;j++)
        {
            if(student.score[j]<student.score[j+1])
            {
                temp=student.score[j];
                student.score[j]=student.score[j+1];
                student.score[j+1]=temp;
            }
        }
    }
    for(i=0,student.total=0;i<5;i++)   //for(i=0;i<5;i++)  修改
    {
        student.total =student.total + student.score[i];
    }
    student.average =student.total /5.0;
    printf("Name:%s\n",ptr->name ); //printf("Name:%s\n",student->name ); 修改
    printf("ID:%s\n",ptr->id);      //printf("ID:%d\n",student->id );     修改
    printf("Score:");
    for(i=0;i<5;i++)
    {
        if(i==4)
        {
            printf("%d\n",ptr->score[i]);
            //printf("%d\n",student->score[i]); 修改
        }
        else
        {
            printf("%d ",ptr->score[i]);
            //printf("%d ",student->score [i]);  修改
        }
    }
    printf("average:%.2lf total:%d\n",ptr->average ,ptr->total );
    // printf("average:%.2lf total:%d\n",student->average ,student->total ); 修改
    return 0;
}