c语言实现统计一篇英文短文中单词的个数
时间: 2023-07-02 16:05:01 浏览: 76
以下是一个简单的 C 语言程序,可以统计一篇英文短文中单词的个数:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1 /* 在单词内 */
#define OUT 0 /* 在单词外 */
int main()
{
int c, state, words;
state = OUT;
words = 0;
while ((c = getchar()) != EOF)
{
if (isspace(c))
{
state = OUT;
}
else if (state == OUT)
{
state = IN;
++words;
}
}
printf("单词个数为 %d\n", words);
return 0;
}
```
该程序使用了两个状态 `IN` 和 `OUT` 来判断当前字符是否在单词中。当遇到空格、制表符或换行符时,将状态设置为 `OUT`;当遇到字母或数字时,将状态设置为 `IN` 并增加单词计数器。最后输出单词个数即可。
相关问题
使用C语音统计一篇英语短文中单词的个数
好的,我们可以使用C语言实现统计一篇英语短文中单词个数的功能。具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LEN 10000
int main() {
char text[MAX_LEN];
char *word;
char *delim = " \n\t.,;?!-\"";
int word_count = 0;
// 读取英语短文
printf("请输入英文短文:\n");
fgets(text, MAX_LEN, stdin);
// 统计单词个数
word = strtok(text, delim);
while (word != NULL) {
word_count++;
word = strtok(NULL, delim);
}
// 输出结果
printf("该短文中单词的个数为:%d\n", word_count);
return 0;
}
```
在上述代码中,我们使用了字符串库函数 `strtok` 来分割英文短文中的单词,具体流程如下:
1. 定义一个字符串 `delim`,用于指定分隔符,包括空格、换行、制表符、逗号、句号、分号、问号、感叹号和破折号等常见标点符号。
2. 使用 `fgets` 函数读取控制台输入的英文短文,并将其存储到字符数组 `text` 中。
3. 使用 `strtok` 函数将 `text` 字符串按照 `delim` 分隔符分割成单词,每次调用 `strtok` 函数返回一个单词,并将指针指向下一个单词。
4. 使用一个计数器 `word_count` 统计单词个数,每次调用 `strtok` 函数成功返回一个单词,就将 `word_count` 加1。
5. 统计完所有单词后,输出结果。
注意:在使用 `strtok` 函数时需要注意线程安全问题,如果需要在多线程环境下使用,可以使用 `strtok_r` 函数代替。
希望这个例子能够帮助你理解如何使用C语言统计英语短文中单词的个数。
用C语言写一个统计一篇英文短文中单词的个数的代码,要求用户可以在命令行输入长句子,代码要求有注释
以下是用 C 语言实现统计英文短文中单词个数的代码,代码中有注释解释每一步的作用。
```c
#include <stdio.h>
#include <ctype.h> // 包含 isalpha() 函数
#define MAX_LEN 1000 // 定义最大输入长度
int main() {
char sentence[MAX_LEN]; // 定义一个字符数组存储输入的句子
int word_count = 0, in_word = 0, i = 0; // 定义单词个数、是否在单词中、循环计数器
printf("请输入一个英文句子:");
// 使用 fgets() 函数从标准输入中读取一行字符串
fgets(sentence, MAX_LEN, stdin);
// 遍历整个字符串,计算单词个数
while (sentence[i] != '\0') {
if (isalpha(sentence[i])) {
// 如果当前字符是字母,则表示在一个单词中
in_word = 1;
} else {
// 如果当前字符不是字母,但之前的字符在单词中,则表示一个单词结束
if (in_word == 1) {
word_count++;
in_word = 0;
}
}
i++;
}
// 如果最后一个字符是字母,则还需要再计算一次单词个数
if (in_word == 1) {
word_count++;
}
printf("单词个数为:%d\n", word_count);
return 0;
}
```
这个代码使用 `isalpha()` 函数判断字符是否是字母,如果是则表示当前在一个单词中。如果不是字母,但之前的字符是字母,则表示一个单词结束,需要增加单词数量。最后再判断一次,如果最后一个字符是字母,则还需要再增加一个单词数量。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)