题目描述
![用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之间。排序完成后,输入一个成绩,要求用逐个比较查找的方式找出该成绩是该组中第几个元素的值(即第几名)。如果该成绩不在数组中,则输出“no this score!”。 要求: 1、把排序算法写成函数形式,在主函数中输入N个数据,然后调用排序函数排序。 2、在排序过程中尽量减少数据的交换和移动。 3、把查找算法写成函数形式,在主函数中输入1个数据,然后调用查找函数查找。](https://i-blog.csdnimg.cn/blog_migrate/3866ccefd16efdeaf65eb157e369e4a6.png)
输入

输出

样例输入

样例输出

源代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
void paixu(int a[],int numstudent);
int reserch(int a[],int grade,int numstudent);
int N;
int i,t;
int grade[55];
int score;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
scanf("%d",&grade[i]);
}
scanf("%d",&score);
paixu(grade,N);
for(i=1;i<N;i++)
{
if(i%10!=0)
printf("%d ",grade[i]);
if(i%10==0 && i==N-1)
{
printf("%d",grade[i]);
continue;
}
if(i%10==0)
{
printf("%d\n",grade[i]);
}
}
printf("%d",grade[i]);
printf("\n");
if(reserch(grade,score,N)==0)
{
printf("no this score!\n");
}
else
printf("%d\n",reserch(grade,score,N));
return 0;
}
void paixu(int a[],int student)
{
int i,j;
int t;
for(i=1;i<student;i++)
{
for(j=i;j<=student;j++)
{
if(a[i]<=a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
}
int reserch(int num[],int score,int numstudent)
{
int i;
for(i=1;i<=numstudent;i++)
{
if(num[i]==score)
{
return i;
}
if(i==numstudent)
return 0;
}
}
关于这题
