某班有10个学生,进行了“数学”、“语文”、“英语”、“C语言”等科目的考试,编写程序: (1)将考试成绩输入一个二维数组; (2)求每门课的平均成绩、每门课的不及格学生的人数及每门课的最高分与最低分; (3)求每个学生的平均成绩、总分、不及格门数; (4)按学生平均成绩的高低排序并输出。

时间: 2023-12-18 15:05:49 浏览: 80
以下是一个可能的解决方案,使用 C++ 语言实现: ```c++ #include <iostream> #include <algorithm> // 用于排序函数 using namespace std; const int NUM_STUDENTS = 10; const int NUM_SUBJECTS = 4; int main() { int scores[NUM_STUDENTS][NUM_SUBJECTS]; // 存储每个学生的每门科目成绩 // 输入每个学生的成绩 for (int i = 0; i < NUM_STUDENTS; i++) { cout << "请输入第" << i+1 << "个学生的成绩(数学 语文 英语 C语言):"; for (int j = 0; j < NUM_SUBJECTS; j++) { cin >> scores[i][j]; } } // 计算每门课的平均成绩、不及格人数、最高分和最低分 double avg_scores[NUM_SUBJECTS] = {0}; // 平均成绩 int num_failed[NUM_SUBJECTS] = {0}; // 不及格人数 int max_scores[NUM_SUBJECTS] = {0}; // 最高分 int min_scores[NUM_SUBJECTS] = {100}; // 最低分(初始化为100分) for (int j = 0; j < NUM_SUBJECTS; j++) { for (int i = 0; i < NUM_STUDENTS; i++) { avg_scores[j] += scores[i][j]; if (scores[i][j] < 60) { num_failed[j]++; } max_scores[j] = max(max_scores[j], scores[i][j]); min_scores[j] = min(min_scores[j], scores[i][j]); } avg_scores[j] /= NUM_STUDENTS; } // 输出每门课的平均成绩、不及格人数、最高分和最低分 cout << "每门课的平均成绩、不及格人数、最高分和最低分如下:" << endl; cout << "数学:平均成绩:" << avg_scores[0] << ",不及格人数:" << num_failed[0] << ",最高分:" << max_scores[0] << ",最低分:" << min_scores[0] << endl; cout << "语文:平均成绩:" << avg_scores[1] << ",不及格人数:" << num_failed[1] << ",最高分:" << max_scores[1] << ",最低分:" << min_scores[1] << endl; cout << "英语:平均成绩:" << avg_scores[2] << ",不及格人数:" << num_failed[2] << ",最高分:" << max_scores[2] << ",最低分:" << min_scores[2] << endl; cout << "C语言:平均成绩:" << avg_scores[3] << ",不及格人数:" << num_failed[3] << ",最高分:" << max_scores[3] << ",最低分:" << min_scores[3] << endl; // 计算每个学生的平均成绩、总分、不及格门数 double avg_scores_per_student[NUM_STUDENTS] = {0}; // 每个学生的平均成绩 int total_scores[NUM_STUDENTS] = {0}; // 每个学生的总分 int num_failed_per_student[NUM_STUDENTS] = {0}; // 每个学生的不及格门数 for (int i = 0; i < NUM_STUDENTS; i++) { for (int j = 0; j < NUM_SUBJECTS; j++) { total_scores[i] += scores[i][j]; if (scores[i][j] < 60) { num_failed_per_student[i]++; } } avg_scores_per_student[i] = total_scores[i] / double(NUM_SUBJECTS); } // 按学生平均成绩排序并输出 int idx[NUM_STUDENTS]; for (int i = 0; i < NUM_STUDENTS; i++) { idx[i] = i; } sort(idx, idx+NUM_STUDENTS, [&](int a, int b) {return avg_scores_per_student[a] > avg_scores_per_student[b];}); cout << "按学生平均成绩排序如下:" << endl; for (int i = 0; i < NUM_STUDENTS; i++) { int j = idx[i]; cout << "第" << j+1 << "个学生:"; cout << "平均成绩:" << avg_scores_per_student[j] << ",总分:" << total_scores[j] << ",不及格门数:" << num_failed_per_student[j] << endl; } return 0; } ``` 这个程序的主要思路是,先输入每个学生的成绩,然后对每门课计算平均成绩、不及格人数、最高分和最低分,再对每个学生计算平均成绩、总分和不及格门数,最后按学生平均成绩排序并输出。在计算平均成绩等统计数据时,使用了数组和循环结构。在排序时,使用了 `sort` 函数和 Lambda 表达式。

相关推荐

最新推荐

recommend-type

小学生测验C语言课程设计报告

3.理解程序设计的思路,掌握结构化程序设计的方法,综合使用 C 语言进行程序编写,巩固常用的 C 语言概念,如数组、指针、结构体、链表、文件操作等,注意良好的程序设计风格的培养。提高编写程序解决实际问题的能力...
recommend-type

c语言作业——学生成绩统计.docx

(3)统计学生成绩分布情况(每个分数段人数); (4)查找最高分、最低分;计算学生成绩均值和方差;并输出这四个结果; (5)判断成绩是否服从正态分布; (6)统计不同生源地学生的平均成绩,按平均成绩排序,并...
recommend-type

利用C语言替换文件中某一行的方法

大家都知道C语言提供了文件操作,但是替换文件的某一行比较麻烦,下面是我使用的一个方法,现在分享给大家,有需要的朋友们可以参考借鉴。
recommend-type

C语言实现班档案管理系统课程设计

主要为大家详细介绍了C语言实现班档案管理系统课程设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

C语言程序设计实现学生成绩记录簿

通过编写c语言《学生成绩记录簿系统》让我知道所学的编程语言是需要多练多编写代码锻炼出来的。 1)C语言课程设计的主要目的是培养学生综合运用C语言程序设计课程所学到的知识,编写C程序解决实际问题的能力,以及...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

list根据id查询pid 然后依次获取到所有的子节点数据

可以使用递归的方式来实现根据id查询pid并获取所有子节点数据。具体实现可以参考以下代码: ``` def get_children_nodes(nodes, parent_id): children = [] for node in nodes: if node['pid'] == parent_id: node['children'] = get_children_nodes(nodes, node['id']) children.append(node) return children # 测试数
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。