信息学竞赛练习(字符串)
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小时内删除。