.学生成绩统计程序设计
设计结构体数组,结构中包含学生数据为:学号、姓名、物理分数、数学分数、外语分数、计算机分数。设计各个函数,分别实现以下功能:
(1)输入学生数据(2)显示所有学生信息 (3)统计每科的最高分、最低分、不及格人数、不及格学生的数据。
设计菜单,通过选择菜单调用以上各函数。
C语言程序设计题非常感谢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- bingbingyihao 2022-12-25 13:29关注
回答:我也写了一个版本的,相对功能简单一些,代码如下
# include <stdio.h> # include <stdlib.h> # include <string.h> #define MAX_SIZE 10 #define PASS_SOCRE 60 struct Student { char studentID[20]; char name[20]; int math; int physics; int english; int computer; }; int continueInput() { printf("是否继续输入(1、继续输入 0、退出输入)\n"); int select; scanf("%d", &select); if (select == 1) { return 1; } else { return 0; } } void inputData(Student stuArr[]) { printf("请输入学生信息(学号、姓名、数学成绩、物理成绩、英语成绩、计算机成绩)\n"); for (int i = 0; i < MAX_SIZE; i++) { scanf("%s %s %d %d %d %d", stuArr[i].studentID, stuArr[i].name, &stuArr[i].math, &stuArr[i].physics, &stuArr[i].english, &stuArr[i].computer); if (continueInput() == 0) { return; } } } void printTitle() { printf("学号\t姓名\t数学成绩\t物理成绩\t英语成绩\t计算机成绩)\n"); } void printData(Student stu) { printf("%s\t%s\t%d\t\t%d\t\t%d\t\t%d\n", stu.studentID, stu.name, stu.math, stu.physics, stu.english, stu.computer); } void print(Student stuArr[]) { printTitle(); for (int i = 0; i < MAX_SIZE; i++) { if (strcmp(stuArr[i].name, "") != 0) { printData(stuArr[i]); } } } void printMax(int maxScore[4]) { printf("数学最高分:%d\n", maxScore[0]); printf("物理最高分:%d\n", maxScore[1]); printf("英语最高分:%d\n", maxScore[2]); printf("计算机最高分:%d\n", maxScore[3]); printf("\n"); } void printMin(int minScore[4]) { printf("数学最低分:%d\n", minScore[0]); printf("物理最低分:%d\n", minScore[1]); printf("英语最低分:%d\n", minScore[2]); printf("计算机最低分:%d\n", minScore[3]); printf("\n"); } void printNoPassNumber(int noPassNumber[4]) { printf("数学不及格人数:%d\n", noPassNumber[0]); printf("物理不及格人数:%d\n", noPassNumber[1]); printf("英语不及格人数:%d\n", noPassNumber[2]); printf("计算机不及格人数:%d\n", noPassNumber[3]); printf("\n"); } void printNoPassData(Student stuArr[], int index[4][MAX_SIZE]) { printf("数学不及格学生的成绩\n"); printTitle(); int count = 0; for (int i = 0; i < MAX_SIZE; i++) { if (index[0][count] == i) { count++; printData(stuArr[i]); } } printf("物理不及格学生的成绩\n"); printTitle(); count = 0; for (int i = 0; i < MAX_SIZE; i++) { if (index[1][count] == i) { count++; printData(stuArr[i]); } } printf("英语不及格学生的成绩\n"); printTitle(); count = 0; for (int i = 0; i < MAX_SIZE; i++) { if (index[2][count] == i) { count++; printData(stuArr[i]); } } printf("计算机不及格学生的成绩\n"); printTitle(); count = 0; for (int i = 0; i < MAX_SIZE; i++) { if (index[3][count] == i) { count++; printData(stuArr[i]); } } } void statistic(Student stuArr[]) { // 下标依次表示 数学、物理、英语、计算机 int maxScore[4] = { stuArr[0].math, stuArr[0].physics, stuArr[0].english, stuArr[0].computer }; int minScore[4] = { stuArr[0].math, stuArr[0].physics, stuArr[0].english, stuArr[0].computer }; int noPassNumber[4] = { 0, 0, 0, 0 }; int index[4][MAX_SIZE] = {}; // 不及格的学生下标 int count[4] = { 0, 0, 0, 0 }; for (int i = 0; i < MAX_SIZE; i++) { if (strcmp(stuArr[i].name, "") == 0) { continue; } if (stuArr[i].math > maxScore[0]) { maxScore[0] = stuArr[i].math; } if (stuArr[i].physics > maxScore[1]) { maxScore[1] = stuArr[i].physics; } if (stuArr[i].english > maxScore[2]) { maxScore[2] = stuArr[i].english; } if (stuArr[i].computer > maxScore[3]) { maxScore[3] = stuArr[i].computer; } if (stuArr[i].math < minScore[0]) { minScore[0] = stuArr[i].math; } if (stuArr[i].physics < minScore[1]) { minScore[1] = stuArr[i].physics; } if (stuArr[i].english < minScore[2]) { minScore[2] = stuArr[i].english; } if (stuArr[i].computer < minScore[3]) { minScore[3] = stuArr[i].computer; } if (stuArr[i].math < PASS_SOCRE) { noPassNumber[0]++; index[0][count[0]++] = i; } if (stuArr[i].physics < PASS_SOCRE) { noPassNumber[1]++; index[1][count[1]++] = i; } if (stuArr[i].english < PASS_SOCRE) { noPassNumber[2]++; index[2][count[2]++] = i; } if (stuArr[i].computer < PASS_SOCRE) { noPassNumber[3]++; index[3][count[3]++] = i; } } printMax(maxScore); printMin(minScore); printNoPassNumber(noPassNumber); printNoPassData(stuArr, index); } void menu(Student stuArr[]) { char space[] = "\t\t\t"; printf("%s学生成绩统计系统\n", space); printf("%s1、输入学生信息\n", space); printf("%s2、显示学生信息\n", space); printf("%s3、统计学生信息\n", space); printf("%s4、退出系统\n", space); int chioce; scanf("%d", &chioce); switch (chioce) { case 1: inputData(stuArr); break; case 2: print(stuArr); break; case 3: statistic(stuArr); break; case 4: exit(0); break; default: break; } } int main() { Student stuArr[MAX_SIZE] = {}; while (1) { menu(stuArr); printf("\n"); system("pause"); system("cls"); } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥100 set_link_state
- ¥15 虚幻5 UE美术毛发渲染
- ¥15 CVRP 图论 物流运输优化
- ¥15 Tableau online 嵌入ppt失败
- ¥100 支付宝网页转账系统不识别账号
- ¥15 基于单片机的靶位控制系统
- ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
- ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
- ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
- ¥15 手机接入宽带网线,如何释放宽带全部速度