PAT 甲级1012是一道排序的题,我没有如大多数人一样选择适用sort函数,而是使用了选择排序的方法写了一个函数。
这个函数需要三个参数,第一个参数是需要排序的数组的指针。第二个参数是需要排序的数组的size。第三个参数也是一个数组的指针,数组下标0、1、2分别对应第一、二、三个学生,以此类推,值在main函数中没有被初始化,经过选择函数操作进行赋值,相应的值就是这个学生该成绩的排名。
在main函数中调用排序函数四次,函数就可以生成四个分别对应A、C、M、E的排名数组,下标与学生id一一对应,第一个学生就可以通过下标0查看其排名,以此类推。
5个测试点中,如果没有对相同成绩的情况进行处理,2、3测试点会通不过,我在排序函数中的最后进行了专门处理。
交流可加QQ:1724330748
#include<iostream>
#include<cstring>
void xuanze(int *subject, int N, int *subrank);
using namespace std;
void xuanze(int *subject, int N, int*subrank)
{
int stuid[N];for(int i=0;i<N;i++){stuid[i]=i;}
for(int i=0;i<N;i++){
int positionmax=i;
for(int loca=i;loca<N;loca++){
if(subject[loca]>subject[positionmax])positionmax=loca;}
int temp1=subject[i];