c++问题.
定义一个学生类,使其具有学号、姓名(长度不定)、高数、外语和C++程序设计三门课的成绩属性,以及各属性访问方法、求总成绩、求平均成绩、设置和显示学生信息方法。此外,在ma...
定义一个学生类,使其具有学号、姓名(长度不定)、高数、外语和C++
程序设计三门课的成绩属性,以及各属性访问方法、求总成绩、求平均成绩、设置
和显示学生信息方法。此外,在main函数中以定义学生数组方法模拟一个班的学生
信息,利用独立定义函数方式给出常见情况的统计,如最高成绩、最低成绩、平均
成绩、学生信息列表等。 展开
程序设计三门课的成绩属性,以及各属性访问方法、求总成绩、求平均成绩、设置
和显示学生信息方法。此外,在main函数中以定义学生数组方法模拟一个班的学生
信息,利用独立定义函数方式给出常见情况的统计,如最高成绩、最低成绩、平均
成绩、学生信息列表等。 展开
1个回答
展开全部
4、student
#include <iostream>
#include <string>
#include <cstddef>
#include <algorithm>
class student
{
public:
typedef std::size_t size_type;
student();
student(size_type _id, std::string _name, double _math, double _fL, double _cpp);
size_type id()const;
std::string name()const;
double math()const;
double fL()const;
double cpp()const;
double total()const;
double avg()const;
void SetInfo();
void ShowInfo()const;
private:
student& operator = (const student& stdu);
student(const student& stdu);
struct infos
{
size_type id;
std::string name;
double math;
double fL; // foreignLanguage
double cpp;
}myInfo;
double totalScore;
double avgScore;
};
student::student() : totalScore(0.0), avgScore(0.0)
{
myInfo.id = 0;
myInfo.name = "";
myInfo.math = 0.0;
myInfo.fL = 0.0;
myInfo.cpp = 0.0;
}
student::student(size_type _id, std::string _name, double _math, double _fL, double _cpp)
{
myInfo.id = _id;
myInfo.name = _name;
myInfo.math = _math;
myInfo.fL = _fL;
myInfo.cpp = _cpp;
totalScore = myInfo.math + myInfo.fL + myInfo.cpp;
avgScore = totalScore / 3;
}
void student::SetInfo()
{
std::cin.exceptions(std::ios_base::failbit | std::ios_base::badbit);
std::cout << "请输入该学生的ID: ";
std::cin >> myInfo.id;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的姓名: ";
std::cin >> myInfo.name;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的高数成绩: ";
std::cin >> myInfo.math;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的外语成绩: ";
std::cin >> myInfo.fL;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的C++成绩: ";
std::cin >> myInfo.cpp;
std::cout << "ID为 " << myInfo.id << "的学生信息设置完毕!\n" << std::endl;
totalScore = myInfo.math + myInfo.fL + myInfo.cpp;
avgScore = totalScore / 3;
}
void student::ShowInfo()const
{
std::cout << "ID: " << myInfo.id << '\n';
std::cout << "姓名: " << myInfo.name << '\n';
std::cout << "高数: " << myInfo.math << '\n';
std::cout << "外语: " << myInfo.fL << '\n';
std::cout << "C++: " << myInfo.cpp << '\n';
std::cout << "总分: " << totalScore << '\n';
std::cout << "平均分: " << avgScore << '\n' << std::endl;
}
inline student::size_type student::id()const
{
return myInfo.id;
}
inline std::string student::name()const
{
return myInfo.name;
}
inline double student::math()const
{
return myInfo.math;
}
inline double student::fL()const
{
return myInfo.fL;
}
inline double student::cpp()const
{
return myInfo.cpp;
}
inline double student::total()const
{
return totalScore;
}
inline double student::avg()const
{
return avgScore;
}
inline bool ScoreCmp(const student& elem1, const student& elem2)
{
return elem1.total() < elem2.total();
}
student* highest(student* students, int size)
{
return std::max_element(students, students + size, ScoreCmp);
}
student* lowest(student* students, int size)
{
return std::min_element(students, students + size, ScoreCmp);
}
double total(student* students, int size)
{
double total = 0.0;
for(int i = 0; i < size; ++i)
{
total += students[i].total();
}
return total;
}
double avg(student* students, int size)
{
return total(students, size) / size;
}
void ShowInfo(student* students, int size)
{
std::cout << "\t\t学生信息列表\n\n";
std::cout << "学号\t姓名\t高数\t外语\tC++\t总分\t平均分\n";
double tMath = 0, tFL = 0, tCpp = 0;
for(int i = 0; i < size; ++i)
{
std::cout << students[i].id() << '\t';
std::cout << students[i].name() << '\t';
std::cout << (tMath += students[i].math(), students[i].math()) << '\t';
std::cout << (tFL += students[i].math(), students[i].fL()) << '\t';
std::cout << (tCpp += students[i].math(), students[i].cpp()) << '\t';
std::cout << students[i].total() << '\t';
std::cout << students[i].avg() << "\t\n\n";
}
std::cout << "\n\n\t各科总成绩及平均成绩\n\n";
std::cout << "科目\t\t总成绩\t\t平均成绩\n\n";
std::cout << "数学\t\t" << tMath << "\t\t" << tMath / size << "\n\n";
std::cout << "外语\t\t" << tFL << "\t\t" << tFL / size << "\n\n";
std::cout << "C++\t\t" << tCpp << "\t\t" << tCpp / size << "\n\n";
std::cout << "全班总分: " << total(students, size) << '\n';
std::cout << "全班总平均分: " << avg(students, size) << '\n' << std::endl;
student* high(highest(students, size));
std::cout << "最高成绩的学生的id为: " << high->id() << '\n';
std::cout << "姓名为: " << high->name() << '\n';
std::cout << "总分为: " << high->total() << '\n';
std::cout << "平均分为: " << high->avg() << "\n\n";
student* low(lowest(students, size));
std::cout << "最低成绩的学生的id为: " << low->id() << '\n';
std::cout << "姓名为: " << low->name() << '\n';
std::cout << "总分为: " << low->total() << '\n';
std::cout << "平均分为: " << low->avg() << "\n\n";
}
int main()
{
using namespace std;
const int size = 5;
student students[size];
for(int i = 0; i < size; ++i)
{
students[i].SetInfo();
}
ShowInfo(students, size);
}
测试结果(发在百度里格式显示不出来):
请输入该学生的ID: 1
请输入ID为 1 的学生的姓名: shj
请输入ID为 1 的学生的高数成绩: 20
请输入ID为 1 的学生的外语成绩: 33
请输入ID为 1 的学生的C++成绩: 12.5
ID为 1的学生信息设置完毕!
请输入该学生的ID: 2
请输入ID为 2 的学生的姓名: jimmyi
请输入ID为 2 的学生的高数成绩: 50
请输入ID为 2 的学生的外语成绩: 22.5
请输入ID为 2 的学生的C++成绩: 30
ID为 2的学生信息设置完毕!
请输入该学生的ID: 3
请输入ID为 3 的学生的姓名: shy
请输入ID为 3 的学生的高数成绩: 50
请输入ID为 3 的学生的外语成绩: 0
请输入ID为 3 的学生的C++成绩: 50
ID为 3的学生信息设置完毕!
请输入该学生的ID: 4
请输入ID为 4 的学生的姓名: wokao
请输入ID为 4 的学生的高数成绩: 90
请输入ID为 4 的学生的外语成绩: 0
请输入ID为 4 的学生的C++成绩: 100
ID为 4的学生信息设置完毕!
请输入该学生的ID: 5
请输入ID为 5 的学生的姓名: niubi
请输入ID为 5 的学生的高数成绩: 110
请输入ID为 5 的学生的外语成绩: 105
请输入ID为 5 的学生的C++成绩: 150
ID为 5的学生信息设置完毕!
学生信息列表
学号 姓名 高数 外语 C++ 总分 平均分
1 shj 20 33 12.5 65.5 21.8333
2 jimmyi 50 22.5 30 102.5 34.1667
3 shy 50 0 50 100 33.3333
4 wokao 90 0 100 190 63.3333
5 niubi 110 105 150 365 121.667
各科总成绩及平均成绩
科目 总成绩 平均成绩
数学 320 64
外语 160.5 32.1
C++ 342.5 68.5
全班总分: 823
全班总平均分: 164.6
最高成绩的学生的id为: 5
姓名为: niubi
总分为: 365
平均分为: 121.667
最低成绩的学生的id为: 1
姓名为: shj
总分为: 65.5
平均分为: 21.8333
#include <iostream>
#include <string>
#include <cstddef>
#include <algorithm>
class student
{
public:
typedef std::size_t size_type;
student();
student(size_type _id, std::string _name, double _math, double _fL, double _cpp);
size_type id()const;
std::string name()const;
double math()const;
double fL()const;
double cpp()const;
double total()const;
double avg()const;
void SetInfo();
void ShowInfo()const;
private:
student& operator = (const student& stdu);
student(const student& stdu);
struct infos
{
size_type id;
std::string name;
double math;
double fL; // foreignLanguage
double cpp;
}myInfo;
double totalScore;
double avgScore;
};
student::student() : totalScore(0.0), avgScore(0.0)
{
myInfo.id = 0;
myInfo.name = "";
myInfo.math = 0.0;
myInfo.fL = 0.0;
myInfo.cpp = 0.0;
}
student::student(size_type _id, std::string _name, double _math, double _fL, double _cpp)
{
myInfo.id = _id;
myInfo.name = _name;
myInfo.math = _math;
myInfo.fL = _fL;
myInfo.cpp = _cpp;
totalScore = myInfo.math + myInfo.fL + myInfo.cpp;
avgScore = totalScore / 3;
}
void student::SetInfo()
{
std::cin.exceptions(std::ios_base::failbit | std::ios_base::badbit);
std::cout << "请输入该学生的ID: ";
std::cin >> myInfo.id;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的姓名: ";
std::cin >> myInfo.name;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的高数成绩: ";
std::cin >> myInfo.math;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的外语成绩: ";
std::cin >> myInfo.fL;
std::cout << "请输入ID为 " << myInfo.id << " 的学生的C++成绩: ";
std::cin >> myInfo.cpp;
std::cout << "ID为 " << myInfo.id << "的学生信息设置完毕!\n" << std::endl;
totalScore = myInfo.math + myInfo.fL + myInfo.cpp;
avgScore = totalScore / 3;
}
void student::ShowInfo()const
{
std::cout << "ID: " << myInfo.id << '\n';
std::cout << "姓名: " << myInfo.name << '\n';
std::cout << "高数: " << myInfo.math << '\n';
std::cout << "外语: " << myInfo.fL << '\n';
std::cout << "C++: " << myInfo.cpp << '\n';
std::cout << "总分: " << totalScore << '\n';
std::cout << "平均分: " << avgScore << '\n' << std::endl;
}
inline student::size_type student::id()const
{
return myInfo.id;
}
inline std::string student::name()const
{
return myInfo.name;
}
inline double student::math()const
{
return myInfo.math;
}
inline double student::fL()const
{
return myInfo.fL;
}
inline double student::cpp()const
{
return myInfo.cpp;
}
inline double student::total()const
{
return totalScore;
}
inline double student::avg()const
{
return avgScore;
}
inline bool ScoreCmp(const student& elem1, const student& elem2)
{
return elem1.total() < elem2.total();
}
student* highest(student* students, int size)
{
return std::max_element(students, students + size, ScoreCmp);
}
student* lowest(student* students, int size)
{
return std::min_element(students, students + size, ScoreCmp);
}
double total(student* students, int size)
{
double total = 0.0;
for(int i = 0; i < size; ++i)
{
total += students[i].total();
}
return total;
}
double avg(student* students, int size)
{
return total(students, size) / size;
}
void ShowInfo(student* students, int size)
{
std::cout << "\t\t学生信息列表\n\n";
std::cout << "学号\t姓名\t高数\t外语\tC++\t总分\t平均分\n";
double tMath = 0, tFL = 0, tCpp = 0;
for(int i = 0; i < size; ++i)
{
std::cout << students[i].id() << '\t';
std::cout << students[i].name() << '\t';
std::cout << (tMath += students[i].math(), students[i].math()) << '\t';
std::cout << (tFL += students[i].math(), students[i].fL()) << '\t';
std::cout << (tCpp += students[i].math(), students[i].cpp()) << '\t';
std::cout << students[i].total() << '\t';
std::cout << students[i].avg() << "\t\n\n";
}
std::cout << "\n\n\t各科总成绩及平均成绩\n\n";
std::cout << "科目\t\t总成绩\t\t平均成绩\n\n";
std::cout << "数学\t\t" << tMath << "\t\t" << tMath / size << "\n\n";
std::cout << "外语\t\t" << tFL << "\t\t" << tFL / size << "\n\n";
std::cout << "C++\t\t" << tCpp << "\t\t" << tCpp / size << "\n\n";
std::cout << "全班总分: " << total(students, size) << '\n';
std::cout << "全班总平均分: " << avg(students, size) << '\n' << std::endl;
student* high(highest(students, size));
std::cout << "最高成绩的学生的id为: " << high->id() << '\n';
std::cout << "姓名为: " << high->name() << '\n';
std::cout << "总分为: " << high->total() << '\n';
std::cout << "平均分为: " << high->avg() << "\n\n";
student* low(lowest(students, size));
std::cout << "最低成绩的学生的id为: " << low->id() << '\n';
std::cout << "姓名为: " << low->name() << '\n';
std::cout << "总分为: " << low->total() << '\n';
std::cout << "平均分为: " << low->avg() << "\n\n";
}
int main()
{
using namespace std;
const int size = 5;
student students[size];
for(int i = 0; i < size; ++i)
{
students[i].SetInfo();
}
ShowInfo(students, size);
}
测试结果(发在百度里格式显示不出来):
请输入该学生的ID: 1
请输入ID为 1 的学生的姓名: shj
请输入ID为 1 的学生的高数成绩: 20
请输入ID为 1 的学生的外语成绩: 33
请输入ID为 1 的学生的C++成绩: 12.5
ID为 1的学生信息设置完毕!
请输入该学生的ID: 2
请输入ID为 2 的学生的姓名: jimmyi
请输入ID为 2 的学生的高数成绩: 50
请输入ID为 2 的学生的外语成绩: 22.5
请输入ID为 2 的学生的C++成绩: 30
ID为 2的学生信息设置完毕!
请输入该学生的ID: 3
请输入ID为 3 的学生的姓名: shy
请输入ID为 3 的学生的高数成绩: 50
请输入ID为 3 的学生的外语成绩: 0
请输入ID为 3 的学生的C++成绩: 50
ID为 3的学生信息设置完毕!
请输入该学生的ID: 4
请输入ID为 4 的学生的姓名: wokao
请输入ID为 4 的学生的高数成绩: 90
请输入ID为 4 的学生的外语成绩: 0
请输入ID为 4 的学生的C++成绩: 100
ID为 4的学生信息设置完毕!
请输入该学生的ID: 5
请输入ID为 5 的学生的姓名: niubi
请输入ID为 5 的学生的高数成绩: 110
请输入ID为 5 的学生的外语成绩: 105
请输入ID为 5 的学生的C++成绩: 150
ID为 5的学生信息设置完毕!
学生信息列表
学号 姓名 高数 外语 C++ 总分 平均分
1 shj 20 33 12.5 65.5 21.8333
2 jimmyi 50 22.5 30 102.5 34.1667
3 shy 50 0 50 100 33.3333
4 wokao 90 0 100 190 63.3333
5 niubi 110 105 150 365 121.667
各科总成绩及平均成绩
科目 总成绩 平均成绩
数学 320 64
外语 160.5 32.1
C++ 342.5 68.5
全班总分: 823
全班总平均分: 164.6
最高成绩的学生的id为: 5
姓名为: niubi
总分为: 365
平均分为: 121.667
最低成绩的学生的id为: 1
姓名为: shj
总分为: 65.5
平均分为: 21.8333
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询