学生成绩统计
从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,
输入结束,分别实现下列功能:
(1)统计不及格人数并打印不及格学生名单;
(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;
(3)统计各分数段的学生人数及所占的百分比。
(4)用一维数组和指针变量作为函数参数,编程打印某班一门课成绩的最高分及其学号。
C语言这个问题,不知道
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 梦回阑珊 2023-12-03 19:35关注
回复不易,麻烦关注下博主,后面还有问题直接私信我,谢谢!!!
#include <stdio.h> #include <stdlib.h> #define MAX_STUDENTS 30 // 函数声明 void printFailList(int grades[], int n); void printAboveAverageList(int grades[], int n, float avg); void printScoreDistribution(int grades[], int n); void printHighestScore(int grades[], int n, int *maxScore, int *maxStudent); int main() { int grades[MAX_STUDENTS]; int n = 0; // 学生人数 int sum = 0; // 总成绩 float avg; // 平均成绩 // 输入成绩,当输入为负值时结束 printf("请输入学生的成绩(负值表示输入结束):\n"); while (1) { int score; scanf("%d", &score); if (score < 0) { break; } if (n >= MAX_STUDENTS) { printf("学生人数超过最大限制\n"); return 1; } grades[n++] = score; sum += score; } if (n == 0) { printf("没有输入成绩\n"); return 1; } // 计算平均成绩 avg = (float)sum / n; // (1) 统计不及格人数并打印不及格学生名单 printFailList(grades, n); // (2) 统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单 printAboveAverageList(grades, n, avg); // (3) 统计各分数段的学生人数及所占的百分比 printScoreDistribution(grades, n); // (4) 打印某班一门课成绩的最高分及其学号 int maxScore, maxStudent; printHighestScore(grades, n, &maxScore, &maxStudent); printf("最高分是 %d,学号是 %d\n", maxScore, maxStudent); return 0; } // (1) 统计不及格人数并打印不及格学生名单 void printFailList(int grades[], int n) { int failCount = 0; printf("不及格学生名单:\n"); for (int i = 0; i < n; ++i) { if (grades[i] < 60) { printf("学号%d\n", i + 1); failCount++; } } printf("不及格人数:%d\n", failCount); } // (2) 统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单 void printAboveAverageList(int grades[], int n, float avg) { int aboveAvgCount = 0; printf("成绩在平均分及平均分之上的学生名单:\n"); for (int i = 0; i < n; ++i) { if (grades[i] >= avg) { printf("学号%d\n", i + 1); aboveAvgCount++; } } printf("成绩在平均分及平均分之上的人数:%d\n", aboveAvgCount); } // (3) 统计各分数段的学生人数及所占的百分比 void printScoreDistribution(int grades[], int n) { int scoreDistribution[6] = {0}; // 0-59, 60-69, 70-79, 80-89, 90-99, 100 float percentage; // 统计各分数段的学生人数 for (int i = 0; i < n; ++i) { if (grades[i] < 60) { scoreDistribution[0]++; } else if (grades[i] < 70) { scoreDistribution[1]++; } else if (grades[i] < 80) { scoreDistribution[2]++; } else if (grades[i] < 90) { scoreDistribution[3]++; } else if (grades[i] < 100) { scoreDistribution[4]++; } else { scoreDistribution[5]++; } } // 打印各分数段的学生人数及百分比 printf("各分数段的学生人数及百分比:\n"); for (int i = 0; i < 6; ++i) { percentage = (float)scoreDistribution[i] / n * 100; printf("%d-%d 分的学生人数:%d,百分比:%.2f%%\n", i * 10, i * 10 + 9, scoreDistribution[i], percentage); } } // (4) 打印某班一门课成绩的最高分及其学号 void printHighestScore(int grades[], int n, int *maxScore, int *maxStudent) { *maxScore = grades[0]; *maxStudent = 1; for (int i = 1; i < n; ++i) { if (grades[i] > *maxScore) { *maxScore = grades[i]; *maxStudent = i + 1; } } }
解决 1无用
悬赏问题
- ¥15 关于树的路径求解问题
- ¥15 yolo在训练时候出现File "D:\yolo\yolov5-7.0\train.py"line 638,in <module>
- ¥30 戴尔inspiron独显直连
- ¥15 进行一项代码设计遇到问题
- ¥15 Mutisim中关于74LS192N计数器芯片设计(计数器)
- ¥50 fastadmin后台无法删除文件
- ¥15 oracle查询Socket read timed out错误
- ¥15 matlab支持向量机使用错误
- ¥99 利用C/C++语言,使用TCP/IP协议,编一个简易聊天程序
- ¥15 如何使用python 实现对串口/dev/ttyUSB0进行上锁,使得该串口只能在一个python脚本中使用,其他脚本不能操作这个串口