C语言采用动态方法创建数组用于储存学生信息

每个学生的成绩信息包括:学号、平时成绩、期*成绩、**成绩、总评成绩,采用动态方法创建数组用于储存学生信息,输入各项成绩,计算总评成绩,具体如下

img

img

定义一个学生信息结构,然后输入,同时计算出总评分,按总评分进行排序

#include <stdio.h>

typedef struct _stuInfo
{
    int id;        //学号
    int s1;        //平时成绩
    int s2;        //期中成绩
    int s3;        //期末成绩
    float total;    //总评成绩
}stuInfo;

void input(stuInfo *stu,int n)
{
    for(int i=0;i<n;i++)
    {
        printf("输入第%d个学生的学号,平时成绩,期中成绩,期末成绩:",i+1);
        scanf("%d%d%d%d",&stu[i].id,&stu[i].s1,&stu[i].s2,&stu[i].s3);
        stu[i].total = stu[i].s1*0.2+stu[i].s2*0.2+stu[i].s3*0.6;
    }
}

void print(stuInfo *stu,int n)
{
    for(int i=0;i<n;i++)
        printf("学号:%d,总评成绩:%.1f\n",stu[i].id,stu[i].total);
}

void add(stuInfo *stu,int n)
{
    printf("输入第%d个学生的学号,平时成绩,期中成绩,期末成绩:",n);
    scanf("%d%d%d%d",&stu[n].id,&stu[n].s1,&stu[n].s2,&stu[n].s3);
    stu[n].total = stu[n].s1*0.2+stu[n].s2*0.2+stu[n].s3*0.6;
    n++;
}

int del(stuInfo *stu,int n)
{
    printf("请输入需要删除的学生学号:");
    int id;
    scanf("%d",&id);
    for(int i=0;i<n;i++)
    {
        if(stu[i].id == id)
        {
            for(int j=i;j<n-1;j++)
                stu[j] = stu[j+1];
            return 1;
        }
    }
    return 0;
}

void sort(stuInfo *stu,int n,int order)
{
    if(order == 1)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n-i-1;j++)
            {
                if(stu[j].id > stu[j+1].id)
                {
                    stuInfo t = stu[j];
                    stu[j] = stu[j+1];
                    stu[j+1] = t;
                }
            }
        }
    }
    else if(order == 2)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n-i-1;j++)
            {
                if(stu[j].total > stu[j+1].total)
                {
                    stuInfo t = stu[j];
                    stu[j] = stu[j+1];
                    stu[j+1] = t;
                }
            }
        }
    }
}

int main()
{
    stuInfo *stu = (stuInfo*)malloc(sizeof(stuInfo)*100);
    int n;
    printf("输入学生人数:");
    scanf("%d",&n);
    input(stu,n);
    print(stu,n);
    //
    add(stu,n);
    n++;
    print(stu,n);
    if(del(stu,n))
        n--;
    print(stu,n);
    sort(stu,n,1);
    print(stu,n);
    sort(stu,n,2);
    print(stu,n);
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^