Student类包含私有数据成员学生姓名、成绩、总人数、总成绩;成员函数sum()计算总人数和总成绩;成员函数aver()计算n个学生的平均成绩。补充完成下列程序。 #include using namespace std; class Student //补充代码 int Student::sum_score=0; int Student::count=0; int main() { Student stu[5] ={Student("Ma",89),Student("Hu",90),Student("LU",95), Student("Li",88),Student("Gao",75)}; for(int i=0;i<5;i++) stu[i].sum(); cout<<"Average="<<Student::aver()<<endl; }
时间: 2023-06-08 20:04:37 浏览: 92
```c++
#include<iostream>
using namespace std;
class Student{
private:
string name; //学生姓名
double score; //学生成绩
static int total; //总人数
static double sum; //总成绩
public:
//构造函数
Student(string n,double s):name(n),score(s){
total++;
sum += s;
}
//静态函数
static double getAverage(){
return sum/total;
}
};
//静态成员变量初始化
int Student::total = 0;
double Student::sum = 0;
int main(){
Student st1("小明", 90);
Student st2("小红", 85);
Student st3("小刚", 95);
cout << "平均成绩为:" << Student::getAverage() << endl;
return 0;
}
```
相关问题
使用友元函数,Student类包含私有数据成员学生姓名、成绩。全局函数sum()计算总人数、总成绩;全局函数aver()计算n个学生的平均成绩(函数参数自己设定)。补充完成下列程序。 #include using namespace std; static int sum_score=0, count=0; //补充代码 int main() { Student stu[5] ={Student("Ma",89),Student("Hu",90),Student("LU",95), Student("Li",88),Student("Gao",75)}; for(int i=0;i<5;i++) sum(stu[i]); cout<<sum_score<<"," <<count<<endl; cout<<"Average="<<aver()<<endl; }
下面是使用友元函数的Student类程序,并且实现了全局函数sum()和aver():
#include<iostream>
#include<string>
using namespace std;
class Student{
private:
string name; //学生姓名
int grade; //成绩
public:
Student(string name, int grade) {
this->name = name;
this->grade = grade;
}
friend void sum(Student* students, int n); //声明sum()为友元函数
friend float aver(Student* students, int n); //声明aver()为友元函数
};
void sum(Student* students, int n) {
int totalScore = 0;
for (int i = 0; i < n; i++) {
totalScore += students[i].grade;
}
cout << "总人数:" << n << endl;
cout << "总成绩:" << totalScore << endl;
}
float aver(Student* students, int n) {
int totalScore = 0;
for (int i = 0; i < n; i++) {
totalScore += students[i].grade;
}
return (float)totalScore / n;
}
int main() {
Student students[] = {
{"小明", 80},
{"小红", 90},
{"小华", 95},
{"小李", 85},
{"小张", 92}
};
int n = sizeof(students) / sizeof(Student);
sum(students, n); //调用sum()计算总人数和总成绩
cout << "平均成绩:" << aver(students, n) << endl; //调用aver()计算平均成绩
return 0;
}
设计一个学生类student,它具有的私有数据成员是:学号、姓名、数学、英语、计算机成绩;具有的公有成员函数是:求3门课总成绩的函数sum;求3门课平均成绩的函数average;显示学生数据信息的函数
show。请问,如何设计这个类的构造函数和析构函数?
对于这个问题,我可以回答。对于构造函数,可以设计一个带有参数的构造函数,用于初始化学号、姓名以及三门课的成绩;对于析构函数,则不需要进行特殊设计,使用默认析构函数即可。
一个可能的构造函数实现如下:
```
class Student {
private:
int studentId;
std::string name;
double mathScore;
double englishScore;
double computerScore;
public:
Student(int id, std::string n, double math, double english, double computer) {
studentId = id;
name = n;
mathScore = math;
englishScore = english;
computerScore = computer;
}
double sum() {
return mathScore + englishScore + computerScore;
}
double average() {
return sum() / 3.0;
}
void show() {
std::cout << "学号:" << studentId << std::endl;
std::cout << "姓名:" << name << std::endl;
std::cout << "数学成绩:" << mathScore << std::endl;
std::cout << "英语成绩:" << englishScore << std::endl;
std::cout << "计算机成绩:" << computerScore << std::endl;
}
};
```
这个构造函数接受五个参数,分别是学号、姓名、数学成绩、英语成绩和计算机成绩,用于初始化学生对象的私有数据成员。在公有成员函数中,sum 函数用于计算三门课的总成绩,average 函数用于计算三门课的平均成绩,show 函数用于输出学生对象的信息。
因为这个类中没有使用指针等需要手动进行内存管理的资源,所以不需要自定义析构函数。
阅读全文