建立一个学生对象数组,内放5位学生的信息(学号 (int)(五位数)、姓名(string)、年龄(int)、成绩(float)),其中要求第一位学生的学号后三位与考生本人学号相同。求平均成绩,并输出第一位同学的信息。在编程中请使用静态数据成员和友元函数。
时间: 2024-12-13 19:15:45 浏览: 6
在编程中,首先你需要创建一个名为`Student`的类,包含学号、姓名、年龄和成绩的属性,并设置学号的第一个要求。为了实现这个需求,你可以添加一个私有静态数据成员存储第一个学生的特定学号信息。同时,为了让其他部分可以访问并操作这个信息,可以将这个数据成员声明为友元函数的朋友。下面是使用C++语言的一个示例:
```cpp
#include <iostream>
#include <vector>
using namespace std;
class Student {
public:
int id; // 学号
string name;
int age;
float score;
// 初始化第一个学生的学号后三位为考生本人学号
static const int firstStudentIdPattern = 10000; // 假设考生学号范围在此范围内
// 友元函数,用于获取或设置第一个学生的学号
friend void setFirstStudentId(int studentId);
static int getFirstStudentId();
private:
// 静态数据成员
static int firstStudentId;
};
// 设置第一个学生的学号
void Student::setFirstStudentId(int studentId) {
if (studentId <= 99999 && studentId >= 10000) { // 判断学号是否满足条件
firstStudentId = studentId;
} else {
cout << "Invalid student ID!" << endl;
}
}
// 获取第一个学生的学号
int Student::getFirstStudentId() {
return firstStudentId;
}
// 示例主程序
int main() {
vector<Student> students;
students.resize(5);
// 设置第一个学生的学号,假设考生学号为123456
setFirstStudentId(12345);
// 初始化其他学生的信息
for (int i = 0; i < 5; ++i) {
students[i].id = firstStudentIdPattern + i * 1000; // 后三位保持一致
students[i].name = "Student" + to_string(i + 1);
students[i].age = i + 18;
students[i].score = rand() % 100 + 60; // 随机生成成绩
}
// 计算平均成绩
float totalScore = 0;
for (const auto& student : students) {
totalScore += student.score;
}
float averageScore = totalScore / students.size();
cout << "Average score: " << averageScore << endl;
// 输出第一位同学的信息
cout << "First student information:" << endl;
cout << "ID: " << students[0].id << endl;
cout << "Name: " << students[0].name << endl;
cout << "Age: " << students[0].age << endl;
cout << "Score: " << students[0].score << endl;
return 0;
}
```
阅读全文