教你如何用结构体指针玩转成绩

2025-11-06 01:58:28

1、struct student* initstuscores(int len)

{

    struct student

{

    int score;

    char *name;

};

教你如何用结构体指针玩转成绩

2、int main()

{

    int len = 0;

    printf("请输入总人数:\n");

    scanf("%d",&len);//scanf为什么要加&取地址,因为不加的话,它只是将0改了而已,没意义,加了之后能从地址那里直接改掉零

教你如何用结构体指针玩转成绩

3、struct student*min = NULL;

    struct student*max = NULL;

    struct student *pstus = initstuscores(len);

    printmes(pstus, len);

    min = findminstu(pstus,len);

    max = findmaxstu(pstus,len);

教你如何用结构体指针玩转成绩

4、printf("max:%s,%d\nmin:%s,%d\ngetaverage=%f\n",max->name,max->score,min->name,min->score,

    getaverage(pstus,len));

    

    if(findsomeoneforname(pstus,len,"zhangsan")==1){

        printf("恭喜,找到了\n");

    }else{

        printf("没有此人\n");

    }

教你如何用结构体指针玩转成绩

5、int i;

    

    struct student *p = (struct student *)malloc(len*sizeof(struct student));//在堆上开辟空间,函数结束调用也不会释放

    for(i=0;i<len;i++){

        printf("请输入名:\n");

        p->name = (char *)malloc(128);

        scanf("%s",p->name);

        printf("请输入分数:\n");

        scanf("%d",&(p->score));

        p++;

    }

    return p-len;

}

教你如何用结构体指针玩转成绩

6、void printmes(struct student *p, int len)

{

     int i;

     

     for(i=0;i<len;i++){

        

        printf("名字:%s,分数:%d\n",p->name,p->score);

        p++;

     }

}

教你如何用结构体指针玩转成绩

7、struct student* findmaxstu(struct student *p, int len)

{

    int i;

    struct student*max;

    max = p;

    

    for(i=0;i<len;i++){

        if(max->score < p->score){

        

        max = p;

        }

        p++;

    }

    return max;

}

struct student* findminstu(struct student *p, int len)

{

    int i;

    struct student*min;

    min = p;

    

    for(i=0;i<len;i++){

        if(min->score > p->score){

        

        min = p;

        }

        p++;

    }

    return min;

    

}

教你如何用结构体指针玩转成绩

8、int findsomeoneforname(struct student *p,int len,char *name)

{

    int i;

      for(i=0;i<len;i++){

          if(strcmp(name,p->name)==0){

              return 1;

          }

          p++;

      }

    return -1;

    

}

float getaverage(struct student *p, int len)

{

    int i;

    int total = 0;

    

    for(i=0;i<len;i++){

        total += p->score;

        p++;

    }

    return (float)total/len;

    

}

教你如何用结构体指针玩转成绩

9、运行程序

教你如何用结构体指针玩转成绩

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢