📄 p5_5.cpp
字号:
/*****************************************
* 5_5.cpp *
* 利用对一个多维数组的某列排序的函数, *
* 将学生某门功课的成绩分班级排序 *
******************************************/
#include<iostream>
using namespace std;
const col=5;
enum dir {Asc,Des};
void sort(int a[][col], int n, int Cn, dir D) //排序
{
int t[col]; //用于暂存一行数据
for (int i=0;i<n-1;i++)
for (int j=i+1;j<n;j++) //从待排序序列中选择一个最大(小)的数组元素
if (a[i][Cn]<a[j][Cn]&&D==Des||a[i][Cn]>a[j][Cn]&&D==Asc)
{
memcpy(t,a[i],sizeof(t)); //交换数组行
memcpy(a[i],a[j],sizeof(t));
memcpy(a[j],t,sizeof(t));
}
}
void main()
{
const CourseN=5;
int n,score[][CourseN]={{20060101, 1, 82, 86, 0},
{20060203, 2, 80, 80, 0},
{20060204, 2, 86, 90, 0},
{20060205, 2, 90, 83, 0},
{20060102, 1, 75, 86, 0}};
n=sizeof(score)/sizeof(score[0]);
for (int i=0;i<n;i++) //计算每个学生的总分
for(int j=2;j<CourseN-1;j++)
score[i][CourseN-1]=score[i][CourseN-1]+score[i][j];
sort(score,n,4,Des); //按总分降序排序
sort(score,n,1,Asc);//按班号的升序排序
for (i=0;i<n;i++) //输出每个人的成绩与总分
{
for(int j=0;j<CourseN;j++)
cout<<score[i][j]<<"\t";
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -