不是VIP会员,不能显示答案

题目解答

题目:
[问题描述] 读入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.
考点:
分析:
解答:
评论:
老师: