简单的冒泡应用之慧慧拿奖学金

慧慧拿奖学金
描述

一年一度评奖学金的时间又到了,规定按照期末成绩每个班的前m名可以获得奖学金。

现在给你慧慧的成绩,和其他n个人的成绩,你能知道慧慧能否得奖,以及前m名的成绩吗?

输入
第一行包含三个整数 n,m, q 分别代表班里除了慧慧还有n个人, 前m名可以获得奖学金, 慧慧的期末成绩为 q (m<=n<=25000)(成绩采用百分制)

第二行包含n个整数,代表n个人的成绩。

输出
第一行输出“YES”或者“NO”,表示慧慧能否得奖学金。

接着若干行输出前m名成绩。(如果有多个人并列第m名,则一并输出)

输入样例 1

10 2 90
78 60 75 80 89 90 91 92 97 93
输出样例 1

NO
97
93
C语言

#include<stdio.h>
int main()
{
    int n,m,q,t;
    int arr[25000]={0};
    scanf("%d%d%d",&n,&m,&q); 
	arr[0]=q;                 //将q排进数组中 
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(int j=0;j<=n;j++)
    {
        for(int l=0;l<=n-j-1;l++)//每完成一次这个循环,可确定一个后满的数,所以下次循环的时候可以减少一次
        {
           if(arr[l]<arr[l+1])
            {  
               t=arr[l];
               arr[l]=arr[l+1];      //冒泡排序 
               arr[l+1]=t;
            }
        }
    }
//    for(int i=0;i<n;i++)
//    {
//    	printf("%d\n",arr[i]);输出排好的数组,用来检测程序是否正确 
//	  }
    if(q>=arr[m-1])
    {
       printf("YES\n");
    }
    else
    {
       printf("NO\n");
    }
    for(int k=0;k<n;k++)
    {
       if(arr[k]>=arr[m-1])
          printf("%d\n",arr[k]);//重点,数组已经排好序了,输出前m个数即可
    }
    return 0;
}


发布了12 篇原创文章 · 获赞 45 · 访问量 3884

猜你喜欢

转载自blog.csdn.net/weixin_45897672/article/details/103153436
今日推荐