在一個英文句子中找最長的單詞並統計單詞個數。假設句子中單詞之間以空格分隔,允許連續多個空格,最後以「.」號結束。要求:
(1)輸出所有單詞
(2)找出最長單詞並輸出
(3)求最長單詞的長度
(4)輸出句子中的單詞數
【分析】
用變量max記錄最長單詞的長度,用變量num統計每個單詞的字符數,用count統計句子中的單詞數,用變量word來判斷是否是單詞的開始,是單詞開始則令word=1,若當前字符是空格或是「.」號,則令word=0,此時單詞結束,判斷統計單詞的長度num是否大於原來最長單詞的長度max,是則令max=num,num再置0,準備統計下一個單詞的長度;若當前字符不是空格或不是「.」號,而前一個字符為空格,即word=0,則表示出現新的單詞,令word=1;若word=1,且當前字符不是空格,或不是「.」,表示在單詞中,則num累加。
【參考程序】
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[81],maxs[20],s[20],c;
int i,j,word=0,num=0,max=0,count=0;
printf(" Enter the string:");
gets(str); /*輸入一行英文短文*/
i=0;
while((c=str[i])!='\0')
{
if(c==' '||c=='.') /*單詞結束*/
{ word=0;
s[num]='\0';
if(str[i-1]==' ') /*考慮多個連續空格*/
{
i++;
continue;
}
puts(s); /*輸出單詞*/
if(num>max)
{
max=num; /*若超過最大值,將num賦值給max*/
strcpy(maxs,s); /*單詞複製到maxs數組中*/
}
num=0; /*num重新初始化為0,統計下一個單詞的長度*/
if(c=='.') break;
}
else if(word==0) /*新的單詞開始*/
{
count++;
word=1;
s[num]=c;
num++;
}
else /*在單詞中*/
{
s[num]=c;
num++;
}
i++;
}
printf("\nmaxword=%s\nmaxlen=%d\n",maxs,max);
printf("totalword=%d\n",count);
return 0;
}
【運行結果】