使用c语言编写单词统计程序
时间: 2023-10-23 21:24:00 浏览: 138
好的,下面是一个简单的单词统计程序,使用C语言实现:
```c
#include <stdio.h>
#include <ctype.h>
#define IN 1 /* 在单词内 */
#define OUT 0 /* 在单词外 */
int main()
{
int c, state, wc;
state = OUT;
wc = 0;
while ((c = getchar()) != EOF)
{
if (isspace(c))
{
state = OUT;
}
else if (state == OUT)
{
state = IN;
++wc;
}
}
printf("单词数为%d\n", wc);
return 0;
}
```
该程序使用了一个状态变量 `state` 来表示当前字符是否在单词内,另一个变量 `wc` 记录单词的数量。程序遍历输入的字符,遇到空格等分隔符时将 `state` 设为 `OUT`,遇到非空字符时检查 `state` 是否为 `OUT`,如果是则将其设为 `IN`,并增加 `wc` 的值。最后输出 `wc` 即为单词数量。
相关问题
如何使用C语言编写程序统计英文短文中的单词数量?请给出详细的代码实现。
在C语言中编写一个统计英文短文中单词数量的程序,关键在于正确地识别单词边界,通常是空格、标点符号和行末。下面是一个简单的实现示例:
参考资源链接:[C语言实现英文短文单词计数代码解析](https://wenku.csdn.net/doc/6412b66fbe7fbd1778d46b5e?spm=1055.2569.3001.10343)
首先,我们需要一个能够处理用户输入的英文短文的函数。为此,我们可以使用一个字符数组来存储输入的短文内容。考虑到字符数组的大小,我们通常设定一个合理的上限,例如1000行,每行最多80个字符。
接着,我们将编写一个循环来逐行读取用户的输入,并将每行内容存储到字符数组中。同时,我们需要设置一个变量来跟踪当前是否处于单词之中(通常我们称之为状态变量),以及一个计数器来统计单词总数。
当读取到一个字符时,我们检查它是字母还是分隔符(如空格、标点符号)。如果是字母,并且当前不在单词中,那么我们进入一个单词,并将单词计数器加1。如果遇到分隔符,则更新状态变量,标记为不在单词中。
循环结束后,输出单词的总数。这即是基本的单词计数逻辑。
下面是一个简单的C语言实现代码:
```c
#include <stdio.h>
#define MAX_LINES 1000
#define MAX_CHARS 80
int main() {
char en[MAX_LINES][MAX_CHARS];
int num = 0; // 单词计数器
int state = 0; // 状态变量,0表示不在单词中,1表示在单词中
int n; // 短文行数
int i, j;
// 读取用户输入的短文行数
printf(
参考资源链接:[C语言实现英文短文单词计数代码解析](https://wenku.csdn.net/doc/6412b66fbe7fbd1778d46b5e?spm=1055.2569.3001.10343)
请使用c语言编写一个程序,这个程序可以统计一句英文句子中每个单词的字符长度,并输出
### 回答1:
我可以为您提供一个简单的C语言程序,用于统计一句英文句子中每个单词的字符长度: #include <stdio.h>
#include <string.h> int main()
{
char str[100];
int count[50], len;
printf("请输入一句英文:");
gets(str);
len = strlen(str);
int j = 0;
count[j] = 0;
for (int i=0; i<=len; i++)
{
if (str[i] == ' ' || str[i] == '\0')
{
printf("单词 %d 的字符长度为:%d\n", j+1, count[j]);
j++;
count[j] = 0;
}
else
count[j]++;
}
return 0;
}
### 回答2:
以下是使用C语言编写的统计英文句子中每个单词字符长度的程序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char sentence[100];
int wordCount = 0;
int wordLength = 0;
printf("请输入一句英文句子:");
fgets(sentence, sizeof(sentence), stdin);
for (int i = 0; i <= strlen(sentence); i++) {
if (sentence[i] == ' ' || sentence[i] == '\0') {
if (wordLength > 0) {
printf("第 %d 个单词长度为 %d\n", wordCount, wordLength);
wordCount++;
wordLength = 0;
}
} else {
wordLength++;
}
}
return 0;
}
```
该程序可以接收用户输入的英文句子,并统计每个单词的字符长度,并输出结果。程序使用fgets函数接收用户输入的句子,存储在字符数组`sentence`中,同时使用`sizeof(sentence)`来限制输入长度不超过数组容量。接下来,程序通过遍历句子中的每个字符,检查每个字符是否为空格或者是句子的结束符号。如果是空格或结束符号,则判断`wordLength`是否大于零,如果是则表示当前已经统计完一个完整的单词,输出该单词的字符长度,并将`wordCount`计数加一;同时将`wordLength`重新置零,以统计下一个单词的字符长度。如果当前字符不是空格或结束符号,则将`wordLength`加一,表示统计当前单词的字符长度。
注意,句子输入结束后会多输出一行统计结果,表示最后一个单词的字符长度。
### 回答3:
以下是用C语言编写的程序,可以统计一句英文句子中每个单词的字符长度并输出:
```c
#include <stdio.h>
#include <string.h>
int main() {
char sentence[100];
int wordLength[20];
int wordCount = 0;
printf("请输入一句英文句子:");
fgets(sentence, sizeof(sentence), stdin);
char *token = strtok(sentence, " "); // 使用空格作为分隔符,将句子切分为单词
while (token != NULL) {
wordLength[wordCount] = strlen(token);
wordCount++;
token = strtok(NULL, " ");
}
printf("每个单词的字符长度为:\n");
for (int i = 0; i < wordCount; i++) {
printf("单词%d: %d\n", i + 1, wordLength[i]);
}
return 0;
}
```
程序的工作原理如下:
1. 首先,我们定义了一个包含100个字符的字符数组`sentence`,用来存储用户输入的句子。
2. 接下来,我们定义了一个包含20个整数的数组`wordLength`,用来存储每个单词的字符长度。
3. 使用`printf`函数提示用户输入一句英文句子,并使用`fgets`函数接收用户输入。
4. 我们使用`strtok`函数将句子按照空格字符进行分割,并将分割得到的每个单词存储到数组`wordLength`中。
5. 具体而言,我们使用`strtok`函数首先将`sentence`中的第一个单词提取出来,并将其存储在指针`token`中。
6. 进入一个循环,判断指针`token`是否为空,如果非空,则将当前单词的字符长度存储在`wordLength`数组的对应位置,同时计数器`wordCount`累加1。
7. 使用`strtok`函数再次调用,继续寻找下一个单词,直到句子中的所有单词都被统计完毕。
8. 最后,使用`printf`函数将每个单词的字符长度逐个输出到屏幕上。
请注意,上述程序假设句子中的单词数量不超过20个,并且每个单词的字符数量不超过100。如有需要,可以根据实际输入进行适当的修改。
阅读全文