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、计算平均分方差。