输入统计学生成绩
2015-11-24 10:13
225 查看
/// @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"); }
相关文章推荐
- Hibernate_hibernate.cfg.xml加载流程源码分析
- .net Signalr 使用笔记
- Misha and Changing Handles
- 微信支付--工具类--组包
- 微信支付--工具类--组包
- 微信支付--工具类--组包
- 微信支付--工具类--组包
- 微信支付--工具类--组包
- 微信支付--工具类--组包
- StringBuffer和String的优缺点比较--------HashMap和Hashtable的区别
- 使用Spring Boot快速构建应用
- struct 位域
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码
- 微信支付--工具类--处理二维码