【题目】输入一段文章(255个字符以内),求文章中单词的个数,相同单词只记一次,The 和 the 视作相同。
【敲代码】
-
//网友代码 var article,w:string; arr:array[1..255] of string; i,len,ans:longint; function check(w:string):boolean; var i:longint; begin if len=0 then exit(true); for i:=1 to len do if arr[i]=w then exit(false); exit(true); end; begin readln(article); article:=upcase(article);//将所有字符转换为大写,解决 the=The 问题 while(article[1]<'A')or(article[1]>'Z')do delete(article,1,1); while length(article)>0do begin i:=1; while(article[i]>='A')and(article[i]<='Z')do inc(i); w:=copy(article,1,i-1); delete(article,1,i); if check(w) then begin inc(len); arr[len]:=w; inc(ans); end; while(article[1]<'A')or(article[1]>'Z')do delete(article,1,1); end; writeln(ans); end.
下面是我对这道题的解决办法,只提供一些步骤:
-
//空格分隔单词,每一个单词分别读入 string 数组中 i:=1; j:=1; read(a[1]);//读入第一个字符 while a[i]<>'.'do;//a数组为char型 begin inc(i); read(a[i]); end; t:=i;//a数组中内容个数 for i:=1 to t do if(a[i]<>' ')and(a[i]<>'.') then sen[j]:=sen[j]+a[i] else inc[j];//空格分隔处理 j:=j-1;//在最后一个'.'后j会+1,但并没有存放数据,所以这里要减去1
//去重复 n:=j;//下面要用j做循环,所以把j保存在n中 count:=j;//count是最后要输出的结果 for i:=1 to n-1do for j:=i+1 to n do if(a[i]=a[j])and(i<>j) then dec(count);//去除重复