题目描述:
在进行文章重复度检查时,经常需要统计一段英文中的单词数量,并找出长度最长的单词。
设有如下定义:char str[500];
编写程序,通过利用cin.getline(str,500);实现从键盘输入一小段英文(其中可以包含空格,但在同一行),利用函数统计该段英文中包含几个单词,输出统计出的单词数量、最长单词的长度以及长度最长的单词,空格隔开。
注意:如果有最长的单词不只一个,输出最先找到的那个。
方法比较蹩脚,明天更新注释和进一步完善
#include<iostream>
#include<string>
using namespace std;
int loc;//最长单词位置
int spa(char a[])//统计单词数量的函数
{
int i=0;
int s=1;
while(a[i]!=0)
{
if(a[i]==' ')//实际就是统计空格数
s++;
i++;
}
return s;
}
int maxlen(char a[])
{
int max=0;//最大长度
int b=0;//当前单词长度
int i=0;//逐个查找
while(a[i]!=0)
{
if(a[i]==' ')
{
if(max<b)
{
max=b;
loc=i-b;
}
b=0;
}
if(a[i]!=' ')
b++;
i++;
if(a[i]==0)
{
if(max<b)
{
max=b;
loc=i-b;
}
b=0;
}
}
return max;
}
int main()
{
char str[500];
cin.getline(str,500);
if(spa(str)==1)
{
cout<<1<<" ";
int i=0;
while(str[i]!=0)
i++;
cout<<i<<" ";
puts(str);
}
else{
cout<<spa(str)<<" "<<maxlen(str)<<" ";
for(int i=loc;i<loc+maxlen(str);i++)
cout<<str[i];
}
return 0;
}