题目要求如下:
用选择法对N个学生的成绩按从大到小的顺序排序,N个学生的成绩整数用scanf 输入,输入的成绩在[0,100]之间。排序完成后,输入一个成绩,要求用逐个比较查找的方式找出该成绩是该组中第几个元素的值(即第几名)。如果该成绩不在数组中,则输出“no this score!”。 要求: 1、把排序算法写成函数形式,在主函数中输入N个数据,然后调用排序函数排序。 2、在排序过程中尽量减少数据的交换和移动。 3、把查找算法写成函数形式,在主函数中输入1个数据,然后调用查找函数查找。
我的代码如下:
#include<stdio.h>
void arrange(int arr[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i]<arr[j])
arr[i]=arr[j];
}
}
}
void search(int arr[],int input,int n)
{
int i;
for(i=0;i<n;i++)
{
if(input==arr[i])
{
printf("%d\n",i+1);
break;
}
}
if(i==n)
printf("no this score!\n");
}
int main()
{
int i=0,n,score[100],j,m;
scanf("%d",&n);
while(i<n)
scanf("%d",score);
i++;
arrange(score,n);
for(j=0;j<n;j++)
{
if(j==n-1)
printf("%d\n",score[j]);
else
printf("%d ",score[j]);
}
scanf("%d",&m);
search(score,m,n);
return 0;
}