输入统计学生成绩

来源:互联网 发布:淘宝子账号分流权重 编辑:程序博客网 时间:2024/05/01 04:03


/// @file exam_1_5.c/// @brief /**exam_1_5 *从键盘输入10个学生的数据,包括:学号、姓名、三门课的成绩。要求输出三门课总平均 成绩,及最高分学生的数据(学号、姓名、三门课成绩、平均分数)。*/#include <windows.h>#include <stdlib.h>#include <stdio.h>#include <crtdbg.h>typedef struct _tag_student_score_info_input{    size_t nId;    char cName[31];    int iScoreLanguage;    int iScoreMath;    int iScorePhysics;    float fScoreAverage;}TAG_STUDENT_SCORE_INFO_INPUT;typedef struct _tag_students_score_info_output{    int iStudentCnt;    double fGradePoint_Language;    double fGradePoint_Math;    double fGradePoint_Physics;}TAG_STUDENTS_SCORE_INFO_OUTPUT;void printStudentInfo(TAG_STUDENT_SCORE_INFO_INPUT* pInfo);void printOutputInfo(TAG_STUDENTS_SCORE_INFO_OUTPUT* pInfo);void fnScoreInputAndParse();int main(int argc, char *argv[ ], char *envp[ ]){    fnScoreInputAndParse();        printf("END, press any key to quit\n");    getchar();        return 0;}void fnScoreInputAndParse(){    int i = 0;    TAG_STUDENT_SCORE_INFO_INPUT Input;    TAG_STUDENT_SCORE_INFO_INPUT BestOne;    TAG_STUDENTS_SCORE_INFO_OUTPUT Output;        ZeroMemory(&Input, sizeof(TAG_STUDENT_SCORE_INFO_INPUT));    ZeroMemory(&BestOne, sizeof(TAG_STUDENT_SCORE_INFO_INPUT));    ZeroMemory(&Output, sizeof(TAG_STUDENTS_SCORE_INFO_OUTPUT));    for (i = 0; i < 3/*10*/; i++)    {        printf("please input NO.%d's ID:", i + 1);        scanf("%d", &Input.nId);        fflush(stdin);                printf("please input NO.%d's Name:", i + 1);        scanf("%30s", &Input.cName); ///< safe input        fflush(stdin);                printf("please input NO.%d's Score Language:", i + 1);        scanf("%d", &Input.iScoreLanguage);        fflush(stdin);                printf("please input NO.%d's Score Math:", i + 1);        scanf("%d", &Input.iScoreMath);        fflush(stdin);        printf("please input NO.%d's Score Physics:", i + 1);        scanf("%d", &Input.iScorePhysics);        fflush(stdin);        Input.fScoreAverage = .0f;        Input.fScoreAverage += Input.iScoreLanguage;        Input.fScoreAverage += Input.iScoreMath;        Input.fScoreAverage += Input.iScorePhysics;        Input.fScoreAverage /= 3;        if (Input.fScoreAverage > BestOne.fScoreAverage)        {            /// is a new best            memcpy(&BestOne, &Input, sizeof(TAG_STUDENT_SCORE_INFO_INPUT));        }        Output.iStudentCnt++;        Output.fGradePoint_Language += Input.iScoreLanguage;        Output.fGradePoint_Math += Input.iScoreMath;        Output.fGradePoint_Physics += Input.iScorePhysics;    }    printf("the best one:\n");    printStudentInfo(&BestOne);    printf("All students grade point average :\n");    printOutputInfo(&Output);}void printStudentInfo(TAG_STUDENT_SCORE_INFO_INPUT* pInfo){    _ASSERT(NULL != pInfo);    printf("\tID = %d\n", pInfo->nId);    printf("\tName = %s\n", pInfo->cName);    printf("\tScoreAverage = %f\n", pInfo->fScoreAverage);    printf("\tScoreLanguage = %d\n", pInfo->iScoreLanguage);    printf("\tScoreMath = %d\n", pInfo->iScoreMath);    printf("\tScorePhysics = %d\n", pInfo->iScorePhysics);    printf("\n");}void printOutputInfo(TAG_STUDENTS_SCORE_INFO_OUTPUT* pInfo){    _ASSERT(NULL != pInfo);    printf("\tAverageScoreLanguage = %f\n", pInfo->fGradePoint_Language / pInfo->iStudentCnt);    printf("\tAverageScoreMath = %f\n", pInfo->fGradePoint_Math / pInfo->iStudentCnt);    printf("\tAverageScorePhysics = %f\n", pInfo->fGradePoint_Physics / pInfo->iStudentCnt);    printf("\n");}


0 0
原创粉丝点击