(1)输入a1、a2、a3,……a20,将他们从小到大排序后输出,并给出现在每个元素所对应的原来次序。如:输入;27,3,25,27,14,39输出: 6(2)输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出(县输出字母多的,次数相同的按字母表顺序输出,不出现的字母不输出)。
如:输入:5b3a+4-hdeh5dh13输出:h3d2a1b1e1(3)插入排序(在输入过程中完成排序)。以任意次序读入20个数,将第一个数放入数组a的第一个元素中。以后读入的数应与已存入数祖a中的数进行比较,确定他在从小到大的排列中应处的位置。将该位置及其后面的元素向后推移一个位置,将信度入的数据天如孔楚的位置。
这样在数组a中的数总是从小到大排列的。20个数据处理完后输出数组a。(4)约瑟夫问题。m个人围成一圈,从第一个人开始报数,数列n的人出圈。在由下个开始报数,数到n的人出圈,…输出依次出圈的人的编号。如:m=8,n=5依次出圈的是:5,2,8,7… 。
var
i,j。temp:integer;
a,b:array[1。。20]of integer;
begin
for i:=1 to 20 do read(a[i]);
for i:=1 to 20 do b[i]:=i;
for i:=1 to 20 do
for j:=1 to 20 do
if a[i]>a[j]
then begin
temp:=a[i]; a[i]:=a[j]; a[j]:=temp;
temp:=b[i]; a[i]:=b[j]; b[j]:=temp;
end;
for i:=1 to 20 do writeln(a[i],' ',b[i]);
end。
var
a;array['a'。。'z']of integer;
ch:char;
begin
read(ch);
while ch<>'?' do
begin
a[ch]:=a[ch]+1;
read(ch);
end;
for ch:='a' to 'z' do
if a[ch]<>0 then
write(ch,' ',a[ch];
end。
。