程序设计C 实验四 题目一 排序查找(0616)

来源:互联网 发布:怎样用ps做淘宝详情页 编辑:程序博客网 时间:2024/06/05 00:36

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

Description

输入共有三行:第一行是一个数N(N < 50),表示学生的人数; 第二行输入N个学生的成绩; 第三行输入一个数m(你要查找的成绩)

Input

第一行输出N个已经排好序的成绩,每两个成绩之间有一个空格隔开,每10个数据换一行(由大到小排列)。 第二行输出你要查找的成绩的名次(如果成绩相同,则并列)。具体的见Sample Output。

Output
1
2
3
4
5
6
7
15
23 32 43 54 65 65 78 87 98 87 76 76 76 55 65
87
23
32 43 54 89 89 78 89 78 55 65 76 87 87 87 65 65 89 86 65 78 54 57 54
86
Sample Input
1
2
3
4
5
6
7
8
98 87 87 78 76 76 76 65 65 65
55 54 43 32 23
2
89 89 89 89 87 87 87 86 78 78
78 76 65 65 65 65 57 55 54 54
54 43 32
8
#include<stdio.h>//bangtongxiejiaoint search(int a[],int x,int y){    for(int i=0;i<x;i++)        if(a[i]==y)            return i+1;    return 0;}int main(){    void sort(int array[],int N);    int a[50],i,N,M,m;    while(scanf("%d",&N)!=EOF){        m=0;    for(i=0;i<N;i++)    {        scanf("%d",&a[i]);    }    scanf("%d",&M);    sort(a,N);    for(i=0;i<N;i++)    {         if(i%10==0)        printf("%d",a[i]);        else if(i%10==9)        printf(" %d\n",a[i]);        else            printf(" %d",a[i]);    }    if(i%10!=9)        printf("\n");    if(!search(a,N,M))        printf("no this score!\n");    else        printf("%d\n",search(a,N,M));    }    return 0;}void sort(int array[],int N){    int i,j,k,t;    for(i=0;i<N-1;i++)    {        k=i;        for(j=i+1;j<N;j++)        {            if(array[j]>array[k])            {                k=j;            }        }        t=array[k];        array[k]=array[i];        array[i]=t;    }}

0 0
原创粉丝点击