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

题目描述:

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

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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用以下方法统计单词个数: 1. 从键盘输入一行字符。 2. 定义一个计数器变量,初始值为。 3. 遍历输入的字符,如果遇到空格,则将计数器加1。 4. 最后输出计数器的值即可,即为单词个数。 示例代码: ``` #include <stdio.h> int main() { char str[100]; int count = ; printf("请输入一行字符:"); fgets(str, 100, stdin); // 从键盘输入一行字符 for (int i = ; str[i] != '\'; i++) { if (str[i] == ' ') { // 遇到空格,计数器加1 count++; } } printf("单词个数为:%d\n", count + 1); // 最后输出计数器的值,加1是因为最后一个单词后没有空格 return ; } ``` ### 回答2: 我们可以通过遍历输入的字符来完成单词个数的统计。首先,定义计数器为0,同时定义一个状态变量,表示当前是否处于单词内,初始值为False。然后,遍历输入的字符,对于每一个字符,进行如下处理: 1. 如果是空格,且前一个字符不是空格,将状态变量设为False。 2. 如果是非空格,且状态变量为False,说明当前进入了一个新的单词,将计数器加1,并将状态变量设为True。 最后输出计数器即可。 下面是具体的实现代码: ```python # 从键盘输入一行字符 s = input("请输入一行字符:") # 定义计数器 count = 0 # 定义状态变量 in_word = False # 遍历输入的字符 for c in s: if c == ' ': if in_word: in_word = False else: if not in_word: count += 1 in_word = True # 输出单词个数 print("单词个数为:", count) ``` 当然,我们也可以使用Python内置的字符串处理函数split()来实现单词个数的统计,如下所示: ```python # 从键盘输入一行字符 s = input("请输入一行字符:") # 使用split()函数分割单词 words = s.split() # 统计单词个数 count = len(words) # 输出单词个数 print("单词个数为:", count) ``` 值得注意的是,这种方法仅适用于单词之间以空格的情况,如果单词之间有其他的分符,需要自行进行替换或切割。 ### 回答3: 使用C++编程语言可以实现从键盘输入一行字符,并统计单词的个数,以下是一段示例代码: ``` #include <iostream> using namespace std; int main() { string input; getline(cin, input); // 从键盘输入一行字符 int wordCount = 0; // 统计单词数目的变量 bool isWord = false; // 标记是否处于单词间 for (int i = 0; i < input.size(); i++) { if (input[i] == ' ') // 判断是否遇到空格 { isWord = false; // 如果遇到空格,说明当前不在单词间 } else if (!isWord) { wordCount++; // 如果不在单词间,说明遇到了新单词 isWord = true; // 标记进入单词间 } } cout << "单词个数为:" << wordCount << endl; return 0; } ``` 该程序首先使用`getline()`函数键盘输入一行字符,并存储到`input`字符串变量。然后,使用一个循环遍历`input`字符串的每一个字符。当遇到空格时,说明当前不在单词间,将`isWord`变量置为`false`;当遇到非空格字符且当前不在单词间时,说明遇到了新单词单词数目`wordCount`加一,并将`isWord`变量置为`true`。最终输出单词的个数。 需要注意的是,该程序只统计空格单词,对于使用其他分符(如逗号、句号等)的情况,程序需要进行相应修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不似少年游'

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值