关键在于空格的寻找与删除
#include<iostream>
#include<string>
#include<stdio.h>
#include<string.h>
using namespace std;
char a[10000];
char b[10000][100];
int main ()
{
// freopen("E:\input.txt", "r", stdin);
char *c=NULL,*d=NULL; //指针初始化!!!
int i,j,k,len,count;
while(gets(a))
{
if(a[0]=='#') break;
len=strlen(a);
for(i=len-1;i>=0;i--) //最后的空格,去掉
{
if(a[i]==' ')
a[i]=NULL;
else
break;
}
len=strlen(a);
if(len == 0)
{
printf("0\n");
continue;
}
for(i=0;i<len;i++) //开始的空格,去掉
{
if(a[i]==' ')
a[i]=NULL;
else
{
d=a+i;
break;
}
}
len=strlen(d); //中间的空格,赋NULL,并记录单词
d[len]=' ';
d[len+1]=NULL;
c=d;
j=0;
for(i=0;i<=len;i++)
{
if(d[i]==' ')
{
d[i]=NULL;
if(d[i+1]!=' ')
{
strcpy(b[j],c);
j++;
c=d+i+1;
}
}
}
count=j; //处理单词,相同的记一次
for(i=0;i<j;i++)
{
for(k=i+1;k<j;k++)
{
if(strcmp(b[i],b[k])==0 && b[k][0]!='#')
{
count--;
b[k][0]='#'; //#是标志,表示该相同单词已被减过,不能再减
}
}
}
cout<<count<<endl;
}
return 0;
}