回 帖 发 新 帖 刷新版面

主题:(我)不会做的题目

输入一个以句号结束的英文句子(不长于255个字符),输出句子中所有的单词和单词的数量,注意不考虑单词重复的情况。 
并假设句子中只含英文字母、空格和句号。 
样例: 
[输入] 
I  am  a  student a sa. 
[输出] 

am   

student 
sa
5  wrods 

回复列表 (共3个回复)

沙发

var
s:string;
i:integer;
begin
  readln(s); i:=0;
  delete(s,length(s),1);
  while pos(' ',s)<>0 do
    begin
      writeln(copy(s,1,pos(' ',s)-1);
      delete(s,1,pos(' ',s));
      i:=i+1;
    end; i:=i+1;
  writeln(s);
  writeln(i);
end.

板凳

var
  a,a1,q1:string;
  p:array[0..255]of integer;
  b,c,i,j,k,l,num:integer;
begin
  for i:=255 downto 0 do
    p[i]:=0;
  j:=0;
  k:=0;
  l:=0;
  b:=0;
  c:=0;
  num:=0;
  delete(a,1,255);
  delete(a1,1,255);
  delete(q1,1,255);

  readln(a);
  b:=length(a);
  c:=pos('.',a);
  delete(a,c+1,b-c);
  insert(' ',a,c);
  b:=length(a);

  for i:=1 to b do
    begin
      if a[i]=' '
         then begin
           inc(j);
       p[j]:=i;
         end;
    end;

  for i:=1 to j do
    begin{3}
      a1:=copy(a,p[i-1]+1,p[i]-p[i-1]);
      writeln(a1);
      for l:=p[i-1]+1 to p[i] do
        a[l]:='?';
      inc(num);
      for k:=1 to j-1 do
        begin{2}
          q1:=copy(a,p[k]+1,p[k+1]-p[k]);
            if a1=q1
            then begin{1}
              for l:=p[k]+1 to p[k+1] do
                a[l]:='?';
            end;{1}
        end;{2}
    end;{3}
  writeln(num,' words');
end.
我自己做出来了...2楼的程序如果遇到as as asas qw.的情况可就错了

3 楼

纯粹的一道考字符串操作的题.一个字符一个字符的读,读到字母就进入队列,读到空格就将当前队列中的字母全部出队列并且组合成单词(字符串),循环以上操作,直到读到句号.

我来回复

您尚未登录,请登录后再回复。点此登录或注册