C语言:现有四个班级,每个班级有45名学生,本学期有5门课程考试,,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中。 要求利用随机函数编写一个函数给每个学生生成各科考试的成绩(0~100之间的整数),通过调用该函数生成全部学生的成绩 编写计算平均成绩的函数,计算每个同学的平均成绩并保存在成绩数组中

时间: 2024-01-02 20:05:00 浏览: 59
下面是实现题目要求的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #define NUM_CLASSES 4 // 班级数量 #define NUM_STUDENTS 45 // 学生数量 #define NUM_COURSES 5 // 课程数量 // 学生信息结构体 struct Student { char id[11]; // 学号 char name[20]; // 姓名 int scores[NUM_COURSES]; // 各科成绩 float avg_score; // 平均成绩 }; // 生成指定范围内的随机数 int rand_int(int min, int max) { return rand() % (max - min + 1) + min; } // 生成随机成绩 void generate_scores(struct Student *stu) { for (int i = 0; i < NUM_COURSES; i++) { stu->scores[i] = rand_int(0, 100); } } // 计算平均成绩 void calculate_avg_score(struct Student *stu) { int sum = 0; for (int i = 0; i < NUM_COURSES; i++) { sum += stu->scores[i]; } stu->avg_score = (float)sum / NUM_COURSES; } int main() { // 初始化随机数种子 srand(time(NULL)); // 定义四个班级的学生信息数组 struct Student class1[NUM_STUDENTS]; struct Student class2[NUM_STUDENTS]; struct Student class3[NUM_STUDENTS]; struct Student class4[NUM_STUDENTS]; // 生成各科成绩和计算平均成绩 for (int i = 0; i < NUM_STUDENTS; i++) { // 生成学号 sprintf(class1[i].id, "STU%04d", i + 1); sprintf(class2[i].id, "STU%04d", i + 1); sprintf(class3[i].id, "STU%04d", i + 1); sprintf(class4[i].id, "STU%04d", i + 1); // 生成姓名 sprintf(class1[i].name, "Student%d", i + 1); sprintf(class2[i].name, "Student%d", i + 1); sprintf(class3[i].name, "Student%d", i + 1); sprintf(class4[i].name, "Student%d", i + 1); // 生成各科成绩和计算平均成绩 generate_scores(&class1[i]); calculate_avg_score(&class1[i]); generate_scores(&class2[i]); calculate_avg_score(&class2[i]); generate_scores(&class3[i]); calculate_avg_score(&class3[i]); generate_scores(&class4[i]); calculate_avg_score(&class4[i]); } // 输出第一个班级的全部学生信息 printf("Class 1:\n"); for (int i = 0; i < NUM_STUDENTS; i++) { struct Student *stu = &class1[i]; printf("ID: %s, Name: %s, Scores: ", stu->id, stu->name); for (int j = 0; j < NUM_COURSES; j++) { printf("%d ", stu->scores[j]); } printf("Avg Score: %.1f\n", stu->avg_score); } // 计算所有学生的平均成绩 float total_avg_score = 0.0; int num_students = NUM_CLASSES * NUM_STUDENTS; for (int i = 0; i < NUM_STUDENTS; i++) { total_avg_score += class1[i].avg_score + class2[i].avg_score + class3[i].avg_score + class4[i].avg_score; } total_avg_score /= num_students; printf("Total Avg Score: %.1f\n", total_avg_score); return 0; } ``` 在上面的代码中,我们首先定义了一个 `Student` 结构体来表示学生信息,包括学号、姓名、各科成绩和平均成绩。然后定义了 `rand_int()` 函数来生成指定范围内的随机数,以及 `generate_scores()` 函数来生成随机成绩,`calculate_avg_score()` 函数来计算平均成绩。最后在 `main` 函数中,我们定义了四个班级的学生信息数组,并使用 `generate_scores()` 函数和 `calculate_avg_score()` 函数生成各科成绩和计算平均成绩。最后输出第一个班级的全部学生信息,并计算所有学生的平均成绩。

相关推荐

最新推荐

recommend-type

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

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

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

1.通过本课程设计,培养上机动手能力,使学生巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手能力,闯过编程关; 2.为后续各门计算机课程的学习打下坚实基础; 3.理解程序设计的思路...
recommend-type

C语言实现学生选修课程系统设计

主要为大家详细介绍了C语言实现学生选修课程系统设计,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

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

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

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

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

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依