主题:(我)不会做的题目
johnsage
[专家分:10] 发布于 2006-10-05 17:11:00
输入一个以句号结束的英文句子(不长于255个字符),输出句子中所有的单词和单词的数量,注意不考虑单词重复的情况。
并假设句子中只含英文字母、空格和句号。
样例:
[输入]
I am a student a sa.
[输出]
I
am
a
student
sa
5 wrods
回复列表 (共3个回复)
沙发
lgr7000 [专家分:230] 发布于 2006-10-06 10:20:00
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.
板凳
johnsage [专家分:10] 发布于 2006-10-06 19:29:00
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 楼
游侠UFO [专家分:1200] 发布于 2006-10-07 12:23:00
纯粹的一道考字符串操作的题.一个字符一个字符的读,读到字母就进入队列,读到空格就将当前队列中的字母全部出队列并且组合成单词(字符串),循环以上操作,直到读到句号.
我来回复