#include<iostream>
#include<string>
using namespace std;
class score {
public:
score()
{
times = 2;
cout << "学生人数" << endl;
}
score(int times1)
{
times = times1;
cout << "自定学生人数" << endl;
}
~score()
{
cout << "~score" << endl;
}
void inputscore()
{
for (int i = 0; i < times; i++)
{
cout << "请输入学生姓名:" << endl;
cin >> name[i];
cout << "请输入科目A成绩:" << endl;
cin >> cj[i][0];
cout << "请输入科目B成绩:" << endl;
cin >> cj[i][1];
cout << "请输入科目C成绩:" << endl;
cin >> cj[i][2];
}
}
void showscore()
{
for (int i = 0; i < times; i++)
{
cout << "姓名:" << name[i] << endl;
cout << "科目A成绩:" << cj[i][0] << endl;
cout << "科目B成绩:" << cj[i][1] << endl;
cout << "科目C成绩:" << cj[i][2] << endl;
}
}
void showstuavg()
{
for (int i = 0; i < times; i++)
{
float avg = 0;
for (int j = 0; j <= 2; j++)
{
avg = avg + cj[i][j];
}
avg = avg / 3;
cout << name[i] << "该同学的平均分:" << avg << endl;
}
}
void showavg()
{
float avgA = 0;
float avgB = 0;
float avgC = 0;
for (int i = 0; i < times; i++)
{
avgA = avgA + cj[i][0];
avgB = avgB + cj[i][1];
avgC = avgC + cj[i][2];
}
avgA = avgA / times;
avgB = avgB / times;
avgC = avgC / times;
cout << "科目A的平均分:" << avgA << endl;
cout << "科目B的平均分:" << avgB << endl;
cout << "科目C的平均分:" << avgC << endl;
}
void paixv()
{
float temp;
for (int i = 0; i <= 2; i++)
{
for (int j = 1;j < times;j++)
{
if (cj[j][i] > cj[j - 1][i])
{
temp = cj[j][i];
cj[j][i] = cj[j - 1][i];
cj[j - 1][i] = temp;
}
}
for (int j = 0; j < times; j++)
{
cout << cj[j][i] << " ";
}
cout << endl;
}
}
private:
float cj[100][100];
int times;
string name[100];
};
int main()
{
score x;
x.inputscore();
x.showscore();
x.showstuavg();
x.showavg();
x.paixv();
}
以上是代码
心得体会:
- 本次实验由于要用到多组数据,要用到二维数组,同时学生姓名要与成绩相对应,所以还要创建字符串数组来存储名字。
- 实验中还用到了C++中的循环结构,本次实验主要运用了for循环结构,基本的用法与c语言中的用法类似。
- 本次实验还运用了排序算法,经典的有冒泡排序,插入排序,选择排序。
- 我认为本次实验的重点在于如何选择更加简便、快捷的排序方法,同时要将排序后的成绩与学生姓名相对应。