学生管理系统.c

题目:编写学生管理系统,其中学生的信息有姓名(汉语拼音,最多20个字符),性别(男/女,用1表示男,2表示女)、
生日(19850101(年月日))、身高(以m为单位),还需要处理C语言、微积分两门课的成绩,请编写程序实现功能:
输入学生的人数和每个学生的信息;输出每门课程的总平均成绩、最高分和最低分,以及获得最高分的学生的信息。
需要注意的是某门课程最高分的学生可能不只一人。
输入输出格式要求:
身高输出时保留两位小数,请按照例子中进行输出,请勿输出其他字符
例如:
输入:3 zhangsan 1 19910101 1.85 85 90 lisi 1 19920202 1.56 89 88 wangwu 2 19910303 1.6 89 90
输出:
C_average:87
C_max:89
lisi 1 19920202 1.56 89 88
wangwu 2 19910303 1.60 89 90
C_min:88
Calculus_average:89
Calculus_max:90
zhangsan 1 19910101 1.85 85 90
wangwu 2 19910303 1.60 89 90
Calculus_min:88


方法一:

#include<stdio.h>
struct Person
{
    char a[20];
    int sex;
    long int birth;
    float hight;
    int c;
    int math;
};
void max_min_c(struct Person p[],int n)
{
    int i,j;
    int max=0,min=p[0].c;
    for(i=0;i<n;i++)
    {
        if(p[i].c>max)
            max=p[i].c;
        else if(p[i].c<min)
            min=p[i].c;
    }
    printf("C_max:%d\n",max);
    printf("C_min:%d\n",min);
    for(i=0;i<n;i++)
    {
        if(p[i].c==max)
            printf("%s %d %ld %.2f %d %d\n",p[i].a,p[i].sex,p[i].birth,
              p[i].hight,p[i].c,p[i].math);
    }
}
void max_min_math(struct Person p[],int n)
{
    int i,j;
    int Max[100]={0};
    int max=0,min=p[0].math;
    for(i=0;i<n;i++)
    {
        if(p[i].math>max)
            max=p[i].math;
        else if(p[i].math<min)
            min=p[i].math;
    }
    printf("Calculus_max:%d\n",max);
    printf("Calculus_min:%d\n",min);
    for(i=0;i<n;i++)
    {
        if(p[i].math==max)
            printf("%s %d %ld %.2f %d %d\n",p[i].a,p[i].sex,p[i].birth,
              p[i].hight,p[i].c,p[i].math);
    }
}
void average(struct Person p[],int n)
{
    int i;
    int sum_c=0,sum_math=0;
    for(i=0;i<n;i++)        //  计算总值
    {
        sum_c+=p[i].c;
        sum_math+=p[i].math;
    }
    printf("C_average:%d\n",sum_c/n);
    max_min_c(p,n);
    printf("Math_average:%d\n",sum_math/n);
    max_min_math(p,n);
}
int main()
{
    int n,i;
    scanf("%d",&n); //学生人数
    getchar();      //特别注意:在输入数字后面输入字符
    struct Person stu[100];
    struct Person *p=stu;
    for(i=0;i<n;i++)
    {
        scanf("%s%d%ld%f%d%d",&stu[i].a,&stu[i].sex,&stu[i].birth,
              &stu[i].hight,&stu[i].c,&stu[i].math);
        getchar();      //同上
    }
    average(p,n);
    return 0;
}

方法二:

#include<stdio.h>
struct Person
{
    char a[20];
    int sex;
    long int birth;
    float hight;
    int c;
    int math;
};
int main()
{
    int n,i;
    int max_c=0,max_math=0,min_c=0,min_math=0;
    int sum_c=0,sum_math=0;
    scanf("%d",&n); //学生人数
    getchar();
    struct Person stu[100];
    struct Person *p=stu;
    for(i=0;i<n;i++,p++)
    {
        scanf("%s%d%ld%f%d%d",&stu[i].a,&stu[i].sex,&stu[i].birth,
              &stu[i].hight,&stu[i].c,&stu[i].math);
        getchar();
        sum_c+=stu[i].c;
        sum_math+=stu[i].math;
        if(stu[i].c>max_c)
            max_c=stu[i].c;
        else if(stu[i].c<min_c)
            min_c=stu[i].c;
        if(stu[i].math>max_math)
            max_math=stu[i].math;
        else if(stu[i].math<min_math)
            min_math=stu[i].math;
    }
    printf("C_average:%d\n",sum_c/n);
    printf("Calculus_max:%d\n",max_c);
    printf("Calculus_min:%d\n",min_c);
    for(i=0;i<n;i++)
    {
        if(stu[i].c==max_c)
            printf("%s %d %ld %.2f %d %d\n",stu[i].a,stu[i].sex,stu[i].birth,
              stu[i].hight,stu[i].c,stu[i].math);
    }
    printf("Math_average:%d\n",sum_math/n);
    printf("Calculus_max:%d\n",max_math);
    printf("Calculus_min:%d\n",min_math);
    for(i=0;i<n;i++)
    {
        if(stu[i].math==max_math)
            printf("%s %d %ld %.2f %d %d\n",stu[i].a,stu[i].sex,stu[i].birth,
              stu[i].hight,stu[i].c,stu[i].math);
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45454859/article/details/103437211
今日推荐