#include <stdio.h> #define
#include <stdio.h>
#define SIZE 10
int main()
{
int data[SIZE], i, j, cnt, n, m;// 定义 //
scanf("%d %d\n", &n, &m);// 输入 n 和 m,此处我们输入的是 5 和 2//
for(i = 1; i <= n; i++)
scanf("%d", &data[i]);// 再次输入 i 个数 data[1] =96 data[2]=-8 data[3]=0 data[4]=16 data[5]=87//
for(i = 1; i <= n; i++)
{ //n=5//
cnt = 0;
for(j = 1; j<= n; j++)//n=5 ,data[1] =96 data[2]=-8 data[3]=0 data[4]= 16
data[5]=87//
if ((data[i] < data[j]) || (data[j] == data[i] && j< i))// 如果说 data[i]<data[j] ,或者说{data[j] 等于 data[i] ,同时 j 小于 i
cnt++;//cnt 的数目加 1//
if(cnt == m)// 如果说 cnt 等于 m 等于 2,因为 cnt=2 ,即整个程序运行了两遍,也运行两遍,换句话说,只有恰好运行两遍的数字才能满足题意。假设, data[1]=96 ,与
data[2]=-8 data[3]=0 data[4]= 16 data[5]=87 //比较大小时, 显然为最大, 不能比其他的数小,不满足条件 data[i] < data[j] ,同样, data[2]=-8 ,比它大的数有 3 个也不满足题意,
data[3]=0 //比它大的数有 4 个,不合题意 data[4]= 16 ,比它大的数恰恰只有两个,满足题意,为所输出 //
printf("%d\n", data[i]);// 输出 data[i]//
}
getch(); //(此语句在 windows 2000 以上系统用 winTC 编译 C 时需要加入,用以暂停查看屏幕)
return 0;
}输入: 5 2
96 -8 0 16 87
输出: ______
答案
第1空:16