pascal的几道例题

来源:百度知道 编辑:UC知道 时间:2024/06/06 04:33:09
我是初学者 求教了

有关pascal的几道题
1.输入一串小写字母(以"."为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出)。
例:
输入:aaaabbbccc.
输出:a:4
b:3
c:3

2.输入一个不大于32767的正整数N,将它转换成一个二进制数。
例如:
输入:100
输出: 1100100

3.输入一个由10个整数组成的序列,其中序列中任意连续三个整数都互不相同,求该序列中所有递增或递减子序列的个数。
例如:
输入:1 10 8 5 9 3 2 6 7 4
输出:6
对应的递增或递减子序列为:
1 10
10 8 5
5 9
9 3 2
2 6 7
7 4

1.
var a:array[1..255]of integer;s:string;i:integer;
begin
readln(s);
for i:=1 to length(s)-1 do inc(a[ord(s[i])]);
for i:=1 to 255 do if a[i]>0 then writeln(chr(i)),':',a[i]);
readln;
end.
2.
var n,a,b:longint;
begin
write(’n=’);readln(n);
a:=0;b:=1;
repeat
a:=a+b*(n mod 2);
b:=b*10;
n :=n div 2;
until n=0;
write(a);
readln;
end.

其实我是去年学的pascal,现在学c/c++了,也就淡忘了pascal了。没必要在pascal上花太多时间。明白一下思路和算法就行了。
如果你真的想知道,和我联系吧。再抄一段例题给我,因为书写格式我忘了,书也不在。谢谢。

2.var n,k:int64;
i:integer;
a:array[1..1000]of longint;
begin
readln(n);
repeat
n:=n+a[i]*k;
k:=k*2;
inc(i);
until i=33;
writeln(n);
end.

楼上的,不至于吧,统计个次数就要用INT64,太小题大做了吧