信息学竞赛练习(字符串)
1、输入一行英文字符,包含若干应用单词。相邻两个单词用空格隔开,统计单词的个数。
如,输入: today is a nice day 输出:total: 5
program lx131;
var st:string;
ch1,ch2:char;
i,l,num:integer;
begin
writeln('input charactors:');
readln(st);
l:=length(st);
i:=1;num:=1;
while i<=1 do
begin
while st[i]=' ' do
begin
字符串函数模拟注册 i:=i+1;
if i<=1 then num:=num+1;
end;
while (st[i]<>' ')and (i<=1) do i:=i+1;
end;
writeln('total:',num);
end.
6543 – 3456 = 3087
8730 – 378 = 8325
8532 – 2358 = 6174
7641 – 1467 = 6174
2、卡布列克常数:卡布列克是一个数学家,他在研究数字时发现:任意一个不是用完全相同的数字组成的四位数,如果对它们的每位数字重新排序,组成一个最大的数和一个最小的数,然后用最大的数减去最小的数,差不够四位数时补零,类推下去,最后将变为一个固定的常数:6174,这就是卡布列克常数。例如:Program lx132;
var s : string;
n,n1,n2,i,j,e : integer;
c : char;
begin
repeat
writeln('Input a number : ');
readln(n);
until (n > 1000) and (n < 9999);
while n <> 6174 do begin
str(n,s);
for i := 1 to 3 do
for j := i+1 to 4 do
if s[i] < s[j] then begin
c := s[i]; s[i] := s[j]; s[j] := c;
end;
val(s,n1,e);
for i := 1 to 2 do begin
c := s[i]; s[i] := s[5-i]; s[5-i] := c;
end;
val(s,n2,e);
n := n1-n2;
writeln(n1,' - ',n2,' = ',n);
if n < 1000 then n := n*10;
end;
end.
3、输入一串字符,其长度小于200。判断该串字符是否构成回文。所谓回文是指从左到右和从右到左读一串字符的值是一样的。如abcba就是一个回文。
Program lx122;
var
st : string;
i,j : byte;
begin
write('Input a string : ');
readln(st);
j := length(st);
i :=1;
while (j > i) and (st[i] = st[j]) do begin
i := i+1; j := j-1;
end;
if j<=i then writeln('Yes')
else writeln('No')
end.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论