【编程小练习】学生成绩简单统计

写一个程序,读入10名学生的成绩。每个学生的数据,包含一个不带空格的名字(不超过19个字符),以及三门课的成绩,每门课的成绩是1到5的整数。程序要输出如下的一个列表,对每个学生输出他的录入时的序号、名字、三门课的成绩和平均成绩(浮点表示),最后输出每门课的平均成绩(浮点表示)和最低最高成绩。

// Hello_C.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"

#include "stdio.h"
//#include "stdlib.h"
//#include "string.h"

typedef struct {
    char name[20];
    int score[3];
} Student;
//    输入一个学生的数据
Student* student_input(Student *pStudent);
//    输出一个学生的数据,包括平均成绩
void student_print(const Student *pStudent);
//    计算一个学生的平均成绩
double student_average(const Student *pStudent);    
//    获得学生的一个成绩
int student_get_score(const Student *pStudent, int index);
//    计算一门课的平均成绩
double score_average(const Student * const *pStudent, int index);
//    计算一门课的最高成绩
int score_max(const Student *pStudent, int index);
//    计算一门课的最低成绩
int score_min(const Student *pStudent, int index);
//    输出每门课的平均成绩
void average(const Student *pStudent);
//    输出每门课的最高成绩
void max(const Student *pStudent);
//    输出每门课的最低成绩
void min(const Student *pStudent);

const int num=10;//学生数
void main()
{
    Student student[num];
    Student *stu;
    stu=&student[0];

    //依次输入10个学生的数据
    for (int i=0;iprintf("请依次输入学生%d的姓名和三个成绩:\n",i+1);
        student_input(&student[i]);
    }

    //输出10个学生的分数和平均分
    printf("no\tname\tscore1\tscore2\tscore3\taverage\n");
    for (int i=0;iprintf("%d\t",i+1);
        student_print(stu+i);
    }

    average(stu);
    max(stu);
    min(stu);
}

Student* student_input(Student *pStudent)
{
    scanf("%s%d%d%d",pStudent->name,&(pStudent->score[0]),&(pStudent->score[1]),&(pStudent->score[2]));
    return pStudent;
}

//    输出一个学生的数据,包括平均成绩
void student_print(const Student *pStudent)
{
    printf("%s\t",pStudent->name);
    for (int i=0;i<3;i++)
    {
        printf("%d\t",pStudent->score[i]);
    }
    printf("%.1f\n",student_average(pStudent));
}

//    计算一个学生的平均成绩
double student_average(const Student *pStudent)
{
    int sum=0;
    for (int i=0;i<3;i++)
    {
        sum+=student_get_score(pStudent,i);
    }
    return sum/3.0;
}

    //获得学生的一个成绩
int student_get_score(const Student *pStudent, int index)
{
    return pStudent->score[index];
}

//    计算一门课的平均成绩
double score_average( const Student *pStudent, int index)
{
    double sum=0;
    for (int i=0;ireturn sum/num;
}

//    计算一门课的最高成绩
int score_max(const Student *pStudent, int index)
{
    int temp=pStudent->score[index];
    for (int i=1;iif (temp<(pStudent+i)->score[index])
            temp=(pStudent+i)->score[index];
    }
    return temp;
}
//    计算一门课的最低成绩
int score_min(const Student *pStudent, int index)
{
    int temp=pStudent->score[index];
    for (int i=1;iif (temp>(pStudent+i)->score[index])
            temp=(pStudent+i)->score[index];
    }
    return temp;
}

//    输出每门课的平均成绩
void average(const Student  *pStudent)
{
    printf("average\t");
    for (int i=0;i<3;i++)
    {
        printf("%.1f\t",score_average(pStudent,i));
    }
    printf("\n");
}

//    输出每门课的最高成绩
void max(const Student *pStudent)
{
    printf("max\t");
    for (int i=0;i<3;i++)
    {
        printf("%d\t",score_max(pStudent,i));
    }
    printf("\n");
}
//    输出每门课的最低成绩
void min(const Student *pStudent)
{
    printf("min\t");
    for (int i=0;i<3;i++)
    {
        printf("%d\t",score_min(pStudent,i));
    }
    printf("\n");
}

结果如下:
【编程小练习】学生成绩简单统计_第1张图片

你可能感兴趣的:(编程学习,c语言)