0
点赞
收藏
分享

微信扫一扫

从键盘输入一小段英文(其中可以包含空格,但在同一行),利用函数统计该段英文中包含几个单词,输出统计出的单词数量、最长单词的长度以及长度最长的单词,空格隔开。

独西楼Q 2022-04-14 阅读 28
c++c语言

题目描述:

在进行文章重复度检查时,经常需要统计一段英文中的单词数量,并找出长度最长的单词。

设有如下定义: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;
 }
举报

相关推荐

0 条评论