编写一个程序,输入N个学生数据,包括学号、姓名、成绩,有一个setdata函数,用于获取信息,一个avg函数,用来计算平均分,一个disp函数,要求输出这些学生数据,使用using namespace std 。(通过动态内存分配对象数组测试)
时间: 2024-11-11 17:22:59 浏览: 31
第二十一章 简单学生成绩管理系统开发实例.ppt
在这个问题中,我们将编写一个简单的C++程序来存储学生信息,包括学号、姓名和成绩,并提供setdata(), avg()和disp()三个功能。我们将使用`std`命名空间,并通过动态内存分配创建一个对象数组来存储学生数据。
```cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 定义学生结构体
struct Student {
int id;
string name;
double score;
};
// setdata 函数:接收并存储学生数据
void setdata(Student* &students, int n) {
students = new Student[n];
for (int i = 0; i < n; ++i) {
cout << "请输入第" << (i+1) << "位学生的学号、姓名和成绩:\n";
cin >> students[i].id >> students[i].name >> students[i].score;
}
}
// avg 函数:计算所有学生平均分数
double avg(const vector<Student>& students) {
double totalScore = 0;
for (const auto& student : students) {
totalScore += student.score;
}
return totalScore / students.size();
}
// disp 函数:输出学生数据
void disp(const vector<Student>& students) {
for (const auto& student : students) {
cout << "学号:" << student.id << ", 姓名:" << student.name << ", 成绩:" << student.score << endl;
}
}
int main() {
// 获取学生人数
int n;
cout << "请输入学生总数:";
cin >> n;
// 动态分配内存
Student* students = new Student[n];
// 设置学生数据
setdata(students, n);
// 计算平均分
double average = avg(vector<Student>(*students, *students + n)); // 将指针转换为引用
// 输出学生数据
disp(vector<Student>(*students, *students + n));
// 释放内存
delete[] students;
cout << "平均成绩为:" << average << endl;
return 0;
}
```
这个程序首先询问用户要输入多少名学生,然后按照要求获取每个学生的信息,接着计算平均分并输出所有学生的信息。最后,记得在主函数结束前释放动态分配的内存。
阅读全文