202132124089
#include<iostream>
#include<string>
using namespace std;
class score {
public:
score()
{
number = 2;
cout << "默认学生为2" << endl;
}
score(int count)
{
number = count;
cout << "自定学生人数" << endl;
}
~score()
{
cout << "~score" << endl;
}
void input_nameandscore()
{
for (int i = 0; i < number; i++)
{
cout << "输入学生姓名" << endl;
cin >> name[i];
cout << "输入科目A成绩" << endl;
cin >> grade[i][0];
cout << "输入科目B成绩" << endl;
cin >> grade[i][1];
cout << "输入科目C成绩" << endl;
cin >> grade[i][2];
}
}
void show_nameandscore()
{
for (int i = 0; i < number; i++)
{
cout << "学生姓名是" << name[i] << endl;
cout << "科目A成绩是" << grade[i][0] << endl;
cout << "科目B成绩是" << grade[i][1] << endl;
cout << "科目C成绩是" << grade[i][2] << endl;
}
}
void show_student_avgscore()
{
//float avg = 0;
for (int i = 0; i < number; i++)
{
float avg = 0;
for (int j = 0; j <= 2; j++)
{
avg = avg + grade[i][j];
}
avg = avg / 3;
cout << name[i] << "同学的平均值是" << avg << endl;
}
}
void show_course_AvgScore()
{
float avgA = 0;
float avgB = 0;
float avgC = 0;
for (int i = 0; i < number; i++)
{
avgA = avgA + grade[i][0];
avgB = avgB + grade[i][1];
avgC = avgC + grade[i][2];
}
avgA = avgA / number;
avgB = avgB / number;
avgC = avgC / number;
cout << "科目A的平均分是" << avgA << endl;
cout << "科目B的平均分是" << avgB << endl;
cout << "科目C的平均分是" << avgC << endl;
}
void ordercourse()
{
float temp;
for (int i = 0; i <= 2; i++)
{
for (int j = 1; j < number; j++)
{
if (grade[j][i] > grade[j - 1][i])
{
temp = grade[j][i];
grade[j][i] = grade[j - 1][i];
grade[j - 1][i] = temp;
}
}
for (int j = 0; j < number; j++)
{
cout << grade[j][i] << " ";
}
cout << endl;
}
}
private:
float grade[100][100];
int number;
string name[100];
};
int main()
{
score x;
x.input_nameandscore();
x.show_nameandscore();
x.show_student_avgscore();
x.show_course_AvgScore();
x.ordercourse();
}
创建一个Score类,完成以下功能:
分别输入两个学生的姓名和成绩
显示这两个同学的每科成绩和平均分
显示每门科目的平均成绩
用排序法对每门成绩由高到低排序
运行结果如图所示:
常用排序方法:插入排序 选择排序 冒泡排序
冒泡排序:
一种简单直接暴力的排序算法。重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序。因一个个浮出所以叫冒泡排序。经过第一轮后最大的元素已经排在最后,所以重复上述操作的话第二大的则会排在倒数第二的位置。n-1次即可完成排序。