統計字串中每個單詞出現的次數 for C++
阿新 • • 發佈:2018-12-26
void CountWords(char str[])//實現字串中每個單詞出現的次數統計
{
char S[20][10];//用於儲存每個單詞
int Count[20];//用於統計每個單詞出現的次數
int i=0,j=0,k=0;
int Num;//表示單詞的個數
int flag[20];//用於標誌單詞是否被統計過,統計過為0,未統計為1
memset(flag,1,sizeof(flag));
while(str[k]!='\0')//將每個單詞放入S的二維陣列中
{
while(str[k]==' '||str[k]=='.')//將單詞與單詞前的空格設為一個基本單位,這個迴圈用於刪除基本單位前的空格或者句號
{
k++;
}
while((str[k]<='z'&&str[k]>='a')||(str[k]<='Z'&&str[k]>='z'))//將字串儲存到二維陣列中,為了能很好的使用puts函式.
{
S[i][j]=str[k];
j++;//指標向前移動一位
k++;//str指標向前移動一位
}
S[i][j]='\0';//為了能很好的使用puts函式,我們需要在每個單詞的末尾加入一個'\0';
i++;//S切換到下一行,當整個迴圈結束時i多計算了一位。
j=0;//j置為0
}
Num=i-1;
/*下面的迴圈用於統計每個單詞出現的次數*/
for(i=0;i<=Num;i++)
{
Count[i]=1;//將每個count初始值設為1,因為每個單詞都算一次
}
for(i=0;i<Num;i++)
{
if(flag[i]==0)//這裡表示如果前面單詞已經被統計過了,我們就不再統計
{
goto SKIP;
}
for(j=i+1;j<=Num;j++)//進行數量統計,統計過的單詞,我們用flag標誌
{
if(strcmp(S[i],S[j])==0)
{
Count[i]++;
flag[j]=0;
}
}
SKIP:;
}
for(i=0;i<=Num;i++)//輸出
{
if(flag[i]!=0)
{
puts(S[i]);
cout<<"number is : "<<Count[i]<<'\n'<<endl;
}
}
}
{
char S[20][10];//用於儲存每個單詞
int Count[20];//用於統計每個單詞出現的次數
int i=0,j=0,k=0;
int Num;//表示單詞的個數
int flag[20];//用於標誌單詞是否被統計過,統計過為0,未統計為1
memset(flag,1,sizeof(flag));
while(str[k]!='\0')//將每個單詞放入S的二維陣列中
{
while(str[k]==' '||str[k]=='.')//將單詞與單詞前的空格設為一個基本單位,這個迴圈用於刪除基本單位前的空格或者句號
{
k++;
}
while((str[k]<='z'&&str[k]>='a')||(str[k]<='Z'&&str[k]>='z'))//將字串儲存到二維陣列中,為了能很好的使用puts函式.
{
S[i][j]=str[k];
j++;//指標向前移動一位
k++;//str指標向前移動一位
}
S[i][j]='\0';//為了能很好的使用puts函式,我們需要在每個單詞的末尾加入一個'\0';
i++;//S切換到下一行,當整個迴圈結束時i多計算了一位。
j=0;//j置為0
}
Num=i-1;
/*下面的迴圈用於統計每個單詞出現的次數*/
for(i=0;i<=Num;i++)
{
Count[i]=1;//將每個count初始值設為1,因為每個單詞都算一次
}
for(i=0;i<Num;i++)
{
if(flag[i]==0)//這裡表示如果前面單詞已經被統計過了,我們就不再統計
{
goto SKIP;
}
for(j=i+1;j<=Num;j++)//進行數量統計,統計過的單詞,我們用flag標誌
{
if(strcmp(S[i],S[j])==0)
{
Count[i]++;
flag[j]=0;
}
}
SKIP:;
}
for(i=0;i<=Num;i++)//輸出
{
if(flag[i]!=0)
{
puts(S[i]);
cout<<"number is : "<<Count[i]<<'\n'<<endl;
}
}
}