急有个排序的题不会,并且函数的返回值是数组,坐等大神解答!
急!!有个排序的题不会,而且函数的返回值是数组,坐等大神解答!!
题目:整数数组A中存放了学号1到100的100名学生的成绩,编写一个函数返回一个数组依次存放学号1到100的学生的成绩排名名次。例如A={90,80,85,99},则应返回数组{2,4,3,1}。
函数声明: int[] rank(int[] A)
坐等大神解答!!万分感激!!
------解决思路----------------------
int* rank(int* A)
其实就是返回指针。
------解决思路----------------------
如果要用返回值,返回指针,所有需要的都包括了;
如果不用返回值,使用数组的引用
------解决思路----------------------
------解决思路----------------------
C++没有这样子的返回值类型写法!
你为什么需要一模一样而不是理解他干嘛这样子写?
题目:整数数组A中存放了学号1到100的100名学生的成绩,编写一个函数返回一个数组依次存放学号1到100的学生的成绩排名名次。例如A={90,80,85,99},则应返回数组{2,4,3,1}。
函数声明: int[] rank(int[] A)
坐等大神解答!!万分感激!!
------解决思路----------------------
int* rank(int* A)
其实就是返回指针。
------解决思路----------------------
如果要用返回值,返回指针,所有需要的都包括了;
如果不用返回值,使用数组的引用
------解决思路----------------------
#define STUDENT_COUNTS 100
int* Rank(int score[])
{
int *pRank = new int[STUDENT_COUNTS];
int scoreTmp[STUDENT_COUNTS];
memcpy(scoreTmp, score, STUDENT_COUNTS*sizeof(int));
for (int i=0; i<STUDENT_COUNTS; ++i)
{
for (int j=0; j<STUDENT_COUNTS-i-1; ++j)
{
if (scoreTmp[j] < scoreTmp[j+1])
{
int nTmp = scoreTmp[j];
scoreTmp[j] = scoreTmp[j+1];
scoreTmp[j+1] = nTmp;
}
}
}
for (int i=0; i<STUDENT_COUNTS; ++i)
{
int nRank = 0;
for (int j=0; j<STUDENT_COUNTS; ++j)
{
if (score[i] == scoreTmp[j])
{
pRank[i] = j-nRank+1;
break;
}
if (j != STUDENT_COUNTS-1)
{
if (scoreTmp[j] == scoreTmp[j+1])
{
++nRank;
}
}
}
}
return pRank;
}
------解决思路----------------------
C++没有这样子的返回值类型写法!
你为什么需要一模一样而不是理解他干嘛这样子写?