编辑代码

#include <stdio.h>
#include<malloc.h>
// 构建结构体
struct Student
    {
        int nianji;
        float chengji;
        char name[100];
    };
//构建函数以成绩进行排序
void paixu(struct Student *pArr,int len)
{
    struct Student t;
    int i,j;
    for(i=0;i<len-1;++i)
    {
        for(j=0;j<len-1-i;++j)
        {
            if(pArr[j].chengji > pArr[j+1].chengji)
            {
                t=pArr[j];
                pArr[j]=pArr[j+1];
                pArr[j+1]=t;
            }
        }
    }
}
//构建函数进行输入
void shuru(struct Student *pArr,int len)
{
    int i;
    for(i=0;i<len;++i)
    {
        printf("请输入第%d个学生的信息: ",i+1);
        printf("年龄 = ");
        scanf("%d",&pArr[i].nianji);
        printf("成绩 = ");
        scanf("%f",&pArr[i].chengji);
        printf("name = ");
        scanf("%s",pArr[i].name);//name是数组名 本身就已经是数组第一个元素的地址了 所以不需加&
    }
}
//构建函数进行输出
void shuchu(struct Student *pArr,int len)
{
    int i;
    printf("学生的信息是:\n");
    for(i=0;i<len;++i)
    {
        printf("第%d个学生的信息是:\n",i+1);
        printf(" 年龄 = %d\n",pArr[i].nianji);
        printf(" 成绩 = %f \n",pArr[i].chengji);
        printf(" 名字 = %s \n",pArr[i].name);
        
        printf("\n \n");
    }
}
int main () {
     int len;
     struct Student *pArr;
     int i,j;
    //动态构建一维数组
     printf("请输入学生人数:\n");
     printf("len= ");
     scanf("%d",&len);
     pArr=(struct Student*)malloc(len*sizeof(struct Student));
    
    shuru(pArr,len);//调用函数进行输入
    
    paixu(pArr,len);//调用函数进行排序
    
    shuchu(pArr,len);//调用函数进行输出
    

    return 0;
}