您的位置:首页 > 其它

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

2017-07-05 23:36 381 查看
题目:

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

(1)输入学生信息

(2)输出学生信息

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

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

代码:

#include <stdio.h>

#include <stdlib.h>

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<n;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<n;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<n;j++)//循环比较找出最大值

        {

            if(T[j].score>max)//如果比max大就将值赋给max

            {

                max=T[j].score;

                (*max1=j);//记录下每次执行下来的值的下标,最终保留的就是最大值的下标

            }

        }

        for(j=0;j<n;j++)//循环比较找出最小值

        {

            if(T[j].score<min)//如果比max大就将值赋给min

            {

                min=T[j].score;//如果比min小就将值赋给min

                (*min1=j);//记录下每次执行下来的值的下标,最终保留的就是最小值的下标

            }

        }

    for(i=0;i<n;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<n;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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  结构体
相关文章推荐