[问题描述] 读入n个不相同且不为0的数(1<=n<=100),不用排序,求出其中第r个大的数(1≤r≤n),即有r-1个数比它大,其余的数都比它小。
例如:输入3,14,22,15,17,6,其中第3个大的数为15。
[算法说明] 以数组a[1..100]记录读入的n个数,并以0结束(0本身不是n个数中的数)。然后从第一个数开始,将它与其余的数进行比较并记录出比它大的数的个数(存于变量y中),若y=r-1时,得到所求结果:否则对下一个数进行同样的处理。
[程序清单]
program exp2(input,output)
Var r,i,j,k,x,y : integer;
a : array[1..100] of integer;
p : boolean;
Begin
j:=0;
readln(x);
while X<>0 do
begin
J:=J+1 ;
a[j]:=x;
READLN(X)
end;
readln(r); p:=true; i:=1;
while p do
begin
X:=A[I] ; y:=0;
for k:=1 to j do
if x<a[k] then Y:=Y+1 ;
if Y=R-1 then begin
writeln(x);
p:=false
end
else i:=i+1
end
End.