这个题吧,不好说,挺坑的,本来是要用树做的,可是数据太弱,不是很需要。
先读取整行字符串,将其分成一个一个的单词存到二维数组中,这里最重要的是b[m][n]='\0';,还有就是一定要分清a[i]是‘ ’,还是‘\0’,这会影响二维数组第一维,进而影响输出和计算;
然后就是循环着查找是否有一样的,然后记录总数,这部分比较简单。
#include<iostream>
#include<string.h>using namespace std;
int main()
{
char a[100],b[10][10];
while(cin.getline(a,100)&&a[0]!='#')
{
int sum=0,i=0,m=0,n=0;
while(a[i]!='\0')
{
if(a[i]!=' ')
{
n=0;
while(a[i]!=' '&&a[i]!='\0')
{
b[m][n]=a[i];
n++;
i++;
}
b[m][n]='\0';
m++;
n=0;
}
if(a[i]==' ')
i++;
}
for(i=0;i<m;i++)
{
int p=1;
for(int j=i+1;j<m;j++)
{
if(strcmp(b[i],b[j])==0)
{
p=0;
break;
}
}
if(p) sum++;
}
cout<<sum<<endl;
}
}