Pascal问题,高手来看看

【试题描述】

将一列数从小到大排序,并输出重复最多的数以及其次数。每个数是都大于等于零且小于2000 的整数。

【输入描述】

两行数据
第一行: 表示数的个数(n<=1500)
第二行: n个用空格隔开的整数。

【输出描述】

三行数据
第一行:重复次数最多的数
第二行:最大重复次数
第三行:从小到大排列好的n个数,每个数之间一个空格隔开。

【输入样例】

8
1 2 4 9 4 6 4 6

【输出样例】

4
3
1 2 4 4 4 6 6 9
程序:
var a:array[0..1500] of integer;
b:array[1..2000] of integer;
max,n,i,j,c,a1,k,t,s:longint;
flag:boolean;

begin
max:=0;
readln(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do
begin
a1:=a[i];
b[a1]:=b[a1]+1;
end;
for i:=1 to n do
if b[i]>max then max:=i;
writeln(max);
writeln(b[max]);
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[j]<a[k] then k:=j;
if k<>i then
begin t:=a[i];a[i]:=a[k];a[k]:=t;end;
end;

s:=0;
for i:=1 to n do
inc(s);
if s=n then write(a[i])
else write(a[i],' ');
writeln;
end.

第1个回答  2010-07-02
var a:array[0..1500] of integer;
b:array[1..2000] of integer;
max,n,i,j:longint;
begin
max:=0;
readln(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do b[a[i]]:=b[a[i]]+1;
for i:=1 to 2000 do if b[i]>max then max:=i;
writeln(max);
writeln(b[max]);
for i:=1 to 2000 do
for j:=1 to b[i] do write(i,' ');
writeln;
realdn;
end.
第2个回答  2010-07-01
for i:=1 to n do
if b[i]>max then max:=i;
writeln(max);
writeln(b[max]);
改为
for i:=0 to 2000 do
if b[i]>max then
begin max:=b[i];maxi:=i;end;
writeln(maxi);
writeln(max);本回答被提问者采纳
第3个回答  2010-07-03
简单的排序和检索,还要问吗?
相似回答
大家正在搜