c-利用结构体存放信息并排序

说起来你们可能不信,今天自己没有选择“剁手”,不是被马爸爸忽悠去买买买了,而是选择孤独的写着代码,本来啥也没有,要是连代码都撸不成了,那就没救了,不知道在座的各位有没有抢到红包,买到东西,护住钱包,选择剁手呢?买东西,别听马爸爸说打折,就有点控制不住自己了,量力而行,买些该买的,当然能抢到便宜又好的东西,那还是不错的,当然了,如果说你有钱,就是想给马爸爸贡献点数据,那请随意,还有时间赶紧的。好吧,闲扯到这,上代码,这里就是开辟空间的时候注意下就行了,指针也需要地址存放的,如果有错的地方,欢迎指正,互相学习。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct student
{
        int id;
        char *pname;
        int score;
}*pstd;
int main()
{
        int i,j,k,m;
        char name[20];
        struct student stu[5];
        struct student tmp;
        pstd=(struct student *)malloc(sizeof(struct student));
        if(pstd==NULL){
                printf("%s\n","failed");
        }else{
        for(i=0;i<5;i++){
                scanf("%d",&stu[i].id);
                scanf("%s",name);
                stu[i].pname=(char *)malloc(20*sizeof(char));
                strcpy(stu[i].pname,name);
                scanf("%d",&stu[i].score);
                }
        }
        printf("%s\n%d\n",stu[2].pname,stu[4].score);
        tmp.pname=(char *)malloc(20*sizeof(char));
        for(j=0;j<4;j++){
                for(k=0;k<5-j-1;k++){
                        if(stu[k].score>stu[k+1].score){
                                tmp=stu[k];
                                stu[k]=stu[k+1];
                                stu[k+1]=tmp;
                        }
                }
        }
        for(m=0;m<5;m++){
                printf("%s%d\n",stu[m].pname,stu[m].score);
                free(stu[m].pname);
        }
        free(pstd);
        return 0;
}

发表评论

您的电子邮箱地址不会被公开。

公众号

编程面试题