统计英文中单词的个数

本文介绍了一种使用C++编程语言统计英文句子中单词数量的方法。通过输入一行英文句子,程序能够正确识别并统计其中的单词个数,特别注意了空格作为单词分隔符的处理。

题目描述:
输入一行英文句子,以回车结束,统计其中的英语单词的个数后输出。

输入描述:
第一行输入一行英文句子,以回车结束输入。(注意可以输入多组数据,即回车后输出结果可继续输入,程序不终止)

输出描述:
输出英语单词的个数。

样例输入:
This is my program
4

样例输出:
Shao Guan College
3

代码:(C++版)

include <iostream>
using namespace std;

#define N 100

int main()
{
    char ch[N];
    int count = 1;
    while(1)
    {
        cin.getline(ch, N, '\n');   // 第三个参数 '\n' 可以不用写
        if(ch[0] == 'z' || ch[0] == 'Z')  // 输入单个字符 小写字母z 或 大写字母Z 即退出循环,结束程序 
        {
            break;
        }
        else
        {
            for(int i = 0; i < strlen(ch); i++)
            {
                if(ch[i] == 32)   // 空格的ASCII码值为 32
                count++;
            }
            cout<<count<<endl;
        }
        count = 1;  // 把输出过的count重新恢复为初始化的状态,不然会叠加
    }
    return 0;
}

 

在C语言中,有多种方法可以统计英文单词个数,下面将介绍两种常见的实现方法: ### 文件读取统计法 该方法用于统计文本文件中纯英文单词个数。基本思路是读取文件中的每个字符,通过判断是否为空白字符来确定单词的边界。示例代码的实现步骤如下,首先打开文件,接着逐个读取文件中的字符,若遇到空白字符,表明一个单词结束,将`in_word`标志置为`0`;若当前字符不是空白字符且`in_word`标志为`0`,意味着一个新单词开始,单词计数器加`1`,并将`in_word`标志置为`1`。最后,将文件指针重新定位到文件开头并返回单词计数器的值: ```c #include <stdio.h> #include <ctype.h> int count_words(FILE *fp) { int in_word = 0; int word_count = 0; int ch; while ((ch = fgetc(fp)) != EOF) { if (isspace(ch)) { in_word = 0; } else if (!in_word) { word_count++; in_word = 1; } } rewind(fp); return word_count; } int main() { FILE *fp; int sum; fp = fopen("example.txt", "r"); if (fp == NULL) { printf("无法打开文件\n"); return 1; } sum = count_words(fp); fclose(fp); printf("\n\t 总单词数为 %d \n", sum); return 0; } ``` ### 字符串遍历统计法 此方法是从键盘输入英文句子,使用C++的`string`类对象来实现单词统计。其具体做法为:从键盘输入英文句子到`string`类对象`s`,然后遍历该对象(字符串),以字母开始以字母结束,中间只有字母和`-`的被认为是一个单词;在判断过程中把它们组装到另一个`string`类对象`st`中。此后再遇到不是字母或`-`时输出`st`(单词),输出后将`st`置空表示该单词已输出,并将单词计数器`sum`增`1`。不过这里要注意,若使用C语言实现,可参考以下示例代码: ```c #include <stdio.h> #include <ctype.h> int main() { char sentence[1000]; int sum = 0; int in_word = 0; printf("请输入英文句子:"); fgets(sentence, sizeof(sentence), stdin); for (int i = 0; sentence[i] != '\0'; i++) { if (isalpha(sentence[i]) || sentence[i] == '-') { if (!in_word) { sum++; in_word = 1; } } else { in_word = 0; } } printf("\t 总单词数为 %d \n", sum); return 0; } ``` 以上两种方法都可以有效地统计英文单词个数,可根据具体需求选择合适的方法。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值