结构体数组管理学生简单信息

题目:

3、写一个程序,定义一个学生结构体,至少要含4个数据项,其中有一项用来保存学生成绩。用此结构体存储班级上的所有学生信息(真实)。要求写一个程序,至少含有四个函数,分别实现:(40分)

(1)输入学生信息

(2)输出学生信息

(3)求出班上最高分、最低分和平均分

(4)显示最高分、最低分同学和成绩大于平均分的所有学生信息。


代码:

#include
#include
typedef struct
{
    char name[10];
    char xuehao[12];
    char phone[12];
    int score;
}StuDent;
void input(StuDent *T,int n)//输入函数
{
    int i;
    printf("输入:姓名,学号,电话和成绩(用空格隔开)\n");
    for(i=0;i       scanf("%s%s%s%d",T[i].name,T[i].xuehao,T[i].phone,&T[i].score);


}
void output(StuDent *T,int n)//输出函数
{
    int i;
    for(i=0;i     {
        printf("%s\t%s\t%s\t%d\n",T[i].name,T[i].xuehao,T[i].phone,T[i].score);
    }
}
float func(StuDent *T,int n,int *max1,int *min1)//找出最大最小值和求出平均值并返回的函数
{
    int max=-999,min=999,sum=0;
    int i,j;
    float average;
        for(j=0;j         {
            if(T[j].score>max)//如果比max大就将值赋给max
            {
                max=T[j].score;
                (*max1=j);//记录下每次执行下来的值的下标,最终保留的就是最大值的下标
            }
        }
        for(j=0;j         {
            if(T[j].score             {
                min=T[j].score;//如果比min小就将值赋给min
                (*min1=j);//记录下每次执行下来的值的下标,最终保留的就是最小值的下标
            }
        }
    for(i=0;i     {
        sum+=T[i].score;
    }
    average=(float)(sum/n);//求和算出平均值
    return average;
}
void Show(StuDent *T,int n,int average,int max1,int min1)//显示最高分最低分和高于平均分的函数 Show();
{
    int i;
    printf("最高分为:%d\n",T[max1].score);
    printf("最低分为:%d\n",T[min1].score);
    printf("高于平均分的学生信息为:\n");
    for(i=0;i     {
        if(T[i].score>average)
            printf("%s\t%s\t%s\t%d\n",T[i].name,T[i].xuehao,T[i].phone,T[i].score);
    }
}


int main()
{
    StuDent *T;//定义一个结构体类型指针T;
    int n,max1,min1;//用来记录最大和最小分数,的数组下标;
    float average;//浮点型变量记录平均分;
    printf("录入学生人数:\n");
    scanf("%d",&n);
    T=(StuDent *)malloc(sizeof(StuDent)*n);
    input(T,n);//调用输入函数
    printf("\n");
    printf("输出信息:\n");
    output(T,n);//调用输出函数
    printf("\n");
    average=func(T,n,&max1,&min1);//接收返回的平均分;&max1,和&min1,直接传地址就不需要返回值;
    Show(T,n,average,max1,min1);
}

你可能感兴趣的:(结构体数组)