C++编写一个能计算n门课程的平均成绩的程序

时间: 2023-05-20 19:03:21 浏览: 75
以下是一个计算n门课程平均成绩的C程序: ``` #include <stdio.h> int main() { int n, i; float grade, sum = 0, average; printf("请输入课程数:"); scanf("%d", &n); for (i = 1; i <= n; i++) { printf("请输入第%d门课程的成绩:", i); scanf("%f", &grade); sum += grade; } average = sum / n; printf("平均成绩为:%.2f\n", average); return 0; } ``` 该程序首先要求用户输入课程数n,然后通过for循环依次输入每门课程的成绩,并累加到sum变量中。最后,通过sum除以n计算平均成绩,并输出结果。
相关问题

编写程序,从键盘输入5个学生的学生信息,包括学号、姓名、3门课程的成绩,计算3门课的平均成绩,将全部信息以二进制方式保存到文件中。用c++的程序编写

### 回答1: 以下是一个实现上述功能的C++程序,其中使用了结构体来存储学生信息和成绩: ```c++ #include <iostream> #include <fstream> using namespace std; struct Student { int id; string name; double score[3]; }; int main() { Student stu[5]; // 从键盘输入5个学生信息 for (int i = 0; i < 5; i++) { cout << "请输入第" << i+1 << "个学生的学号:"; cin >> stu[i].id; cout << "请输入第" << i+1 << "个学生的姓名:"; cin >> stu[i].name; cout << "请输入第" << i+1 << "个学生的3门课程成绩:" << endl; for (int j = 0; j < 3; j++) { cout << "第" << j+1 << "门课程成绩:"; cin >> stu[i].score[j]; } } // 计算每个学生的3门课程平均成绩 for (int i = 0; i < 5; i++) { double sum = 0; for (int j = 0; j < 3; j++) { sum += stu[i].score[j]; } double avg = sum / 3; cout << "学生" << stu[i].name << "的平均成绩为:" << avg << endl; } // 将全部信息以二进制方式保存到文件中 ofstream outfile("student.dat", ios::binary); if (!outfile) { cout << "文件打开失败!" << endl; return 0; } for (int i = 0; i < 5; i++) { outfile.write((char*)&stu[i], sizeof(stu[i])); } outfile.close(); return 0; } ``` 该程序首先定义了一个结构体`Student`,其中包含了学号、姓名和3门课程的成绩。在主函数中,程序先从键盘输入5个学生的信息,并计算每个学生的3门课程平均成绩。接着,程序将全部信息以二进制方式保存到文件`student.dat`中。 在保存数据时,程序使用了`ofstream`流,并指定了`ios::binary`参数,表示以二进制方式写入数据。`outfile.write((char*)&stu[i], sizeof(stu[i]))`用于将第i个学生的信息以二进制方式写入文件中。在读取数据时,程序需要使用相应的`ifstream`流,并将数据读入到与结构体相同的变量中。 注意,在使用二进制方式读写数据时,需要考虑数据在内存中的存储方式和字节序等问题,否则可能导致数据读写出错。 ### 回答2: 下面是一个用C语言编写的程序,可以实现从键盘输入5个学生的学生信息,包括学号、姓名和3门课程的成绩,并计算3门课的平均成绩。然后将全部信息以二进制方式保存到文件中。 ```c #include <stdio.h> struct Student { int id; char name[20]; float scores[3]; }; int main() { struct Student students[5]; FILE *fp; // 从键盘输入学生信息 for (int i = 0; i < 5; i++) { printf("请输入第%d个学生的学号:", i + 1); scanf("%d", &students[i].id); printf("请输入第%d个学生的姓名:", i + 1); scanf("%s", students[i].name); printf("请输入第%d个学生的3门课程成绩:", i + 1); for (int j = 0; j < 3; j++) { scanf("%f", &students[i].scores[j]); } } // 计算平均成绩并保存到文件 fp = fopen("students_info.dat", "wb"); if (fp == NULL) { printf("文件打开失败!"); return 1; } for (int i = 0; i < 5; i++) { float average = 0.0; for (int j = 0; j < 3; j++) { average += students[i].scores[j]; } average /= 3; fwrite(&students[i], sizeof(struct Student), 1, fp); fwrite(&average, sizeof(float), 1, fp); } fclose(fp); return 0; } ``` 这个程序使用了一个结构体`Student`,它包含学号、姓名和3门课程的成绩。程序先从键盘输入5个学生的信息,然后计算每个学生的平均成绩,并将所有学生的信息以二进制方式保存到名为`students_info.dat`的文件中。 请注意,这只是一个简单的实现示例,实际应用中可能需要更多的错误处理和数据验证逻辑。 ### 回答3: 下面是一个用C语言编写的程序,用于从键盘输入5个学生的学生信息,包括学号、姓名、3门课程的成绩,计算3门课的平均成绩,并将全部信息以二进制方式保存到文件中。 ```c #include <stdio.h> struct Student { int id; char name[50]; float score1; float score2; float score3; }; int main() { struct Student students[5]; FILE *file; int i; // 输入学生信息 printf("请输入5个学生的信息:\n"); for (i = 0; i < 5; i++) { printf("学生 %d 的学号:", i + 1); scanf("%d", &students[i].id); printf("学生 %d 的姓名:", i + 1); scanf("%s", students[i].name); printf("学生 %d 的三门课程成绩:\n", i + 1); printf("第一门课程成绩:"); scanf("%f", &students[i].score1); printf("第二门课程成绩:"); scanf("%f", &students[i].score2); printf("第三门课程成绩:"); scanf("%f", &students[i].score3); } // 计算平均成绩并保存到文件 file = fopen("students.dat", "wb"); for (i = 0; i < 5; i++) { float average = (students[i].score1 + students[i].score2 + students[i].score3) / 3; fwrite(&students[i], sizeof(struct Student), 1, file); fwrite(&average, sizeof(float), 1, file); } fclose(file); return 0; } ``` 这个程序首先定义了一个`Student`结构体,用于保存学生的学号、姓名和三门课程的成绩。然后创建一个`students`数组,用于保存5个学生的信息。程序使用循环从键盘输入学生的信息,并使用`scanf`函数将输入的数据存储到相应的结构体成员中。 接下来,程序打开一个二进制文件`students.dat`,使用循环计算每个学生的平均成绩,并将学生信息和平均成绩一起使用`fwrite`函数以二进制方式写入文件。最后,程序关闭文件并结束运行。 你可以运行这个程序并查看生成的`students.dat`文件,它将以二进制方式保存所有学生的信息。

用c++编写一个程序,使用最基础的知识: 输入 m 个学生 n 门课的成绩,分别用函数实现下列功能 1、计算每个学生的平均分 2、计算每门课的平均分 3、找出所有50个分数中最高的分数所对应的学生和课程 4、计算平均分方差

好的,这是一个比较典型的程序设计问题,可以通过使用 C++ 的基础语法来实现。以下是我的实现: ```c++ #include <iostream> #include <cmath> using namespace std; const int MAX_STUDENT_NUM = 100; const int MAX_COURSE_NUM = 10; int scores[MAX_STUDENT_NUM][MAX_COURSE_NUM]; int student_num, course_num; // 计算每个学生的平均分 void calc_student_average() { for (int i = 0; i < student_num; i++) { int sum = 0; for (int j = 0; j < course_num; j++) { sum += scores[i][j]; } double average = sum / (double)course_num; cout << "第" << i + 1 << "个学生的平均分是:" << average << endl; } } // 计算每门课的平均分 void calc_course_average() { for (int i = 0; i < course_num; i++) { int sum = 0; for (int j = 0; j < student_num; j++) { sum += scores[j][i]; } double average = sum / (double)student_num; cout << "第" << i + 1 << "门课的平均分是:" << average << endl; } } // 找出所有50个分数中最高的分数所对应的学生和课程 void find_highest_score() { int max_score = -1; int max_student_index = -1; int max_course_index = -1; for (int i = 0; i < student_num; i++) { for (int j = 0; j < course_num; j++) { if (scores[i][j] > max_score) { max_score = scores[i][j]; max_student_index = i; max_course_index = j; } } } cout << "最高分是:" << max_score << endl; cout << "最高分所对应的学生是:" << max_student_index + 1 << endl; cout << "最高分所对应的课程是:" << max_course_index + 1 << endl; } // 计算平均分方差 void calc_average_variance() { double sum = 0; for (int i = 0; i < student_num; i++) { int student_sum = 0; for (int j = 0; j < course_num; j++) { student_sum += scores[i][j]; } double student_average = student_sum / (double)course_num; sum += pow(student_average - (double)student_sum / (student_num * course_num), 2); } double variance = sum / student_num; cout << "平均分方差是:" << variance << endl; } int main() { // 输入学生和课程数 cout << "请输入学生数和课程数:" << endl; cin >> student_num >> course_num; // 输入成绩 cout << "请按顺序输入每位学生的成绩:" << endl; for (int i = 0; i < student_num; i++) { cout << "请输入第" << i + 1 << "个学生的成绩:" << endl; for (int j = 0; j < course_num; j++) { cin >> scores[i][j]; } } // 计算每个学生的平均分 calc_student_average(); // 计算每门课的平均分 calc_course_average(); // 找出所有50个分数中最高的分数所对应的学生和课程 find_highest_score(); // 计算平均分方差 calc_average_variance(); return 0; } ``` 以上程序实现了输入 m 个学生 n 门课的成绩,并使用函数实现了 1、计算每个学生的平均分,2、计算每门课的平均分,3、找出所有50个分数中最高的分数所对应的学生和课程,4、计算平均分方差。

相关推荐

最新推荐

recommend-type

C语言输入学生成绩,计算并输出这些学生的最低分、最高分、平均分。

输入学生人数n,再输入n个学生的成绩,将所有成绩累加...将第一个学生的成绩赋给最大最小值,用第i个分数与最大值比较,若第i个分数&gt;最大值,将第i个分数赋值给最大值,同理得最小值,最后输出平均值,最大值,最小值。
recommend-type

grpcio-1.63.0-cp38-cp38-linux_armv7l.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

SQLyog-13.1.3-0.x86Community.exe

SQLyog-13.1.3-0.x86Community
recommend-type

VB自动出题题库系统设计(源代码+系统).rar

计算机专业毕业设计VB精品论文资源
recommend-type

debugpy-1.0.0b2-cp35-cp35m-manylinux1_i686.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
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

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

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