WordCount:C语言实现
时间: 2024-03-23 17:38:17 浏览: 80
下面是一个简单的 C 语言程序,用于计算给定文本中的单词数量:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 1000
int main() {
char sentence[MAX_LEN];
int word_count = 0, i;
printf("Enter a sentence: ");
fgets(sentence, MAX_LEN, stdin);
for (i = 0; i < strlen(sentence); i++) {
if (isspace(sentence[i]) || i == strlen(sentence) - 1) {
word_count++;
}
}
printf("Word count: %d\n", word_count);
return 0;
}
```
该程序首先要求用户输入一个字符串,然后使用 `isspace()` 函数检测每个字符是否为空格符或制表符。如果是,表示当前单词已结束,计数器加一。最后输出单词数量。
相关问题
wordcount c语言实现
下面是一个简单的 C 语言程序,用于统计给定文本中每个单词出现的次数:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 1000
#define MAX_WORDS 100
int main() {
char sentence[MAX_LEN];
char words[MAX_WORDS][MAX_LEN];
int freq[MAX_WORDS] = {0};
int i, j, count = 0;
printf("Enter a sentence: ");
fgets(sentence, MAX_LEN, stdin);
// 将字符串转换为小写字母,便于比较
for (i = 0; i < strlen(sentence); i++) {
sentence[i] = tolower(sentence[i]);
}
// 分离单词并统计词频
char *token = strtok(sentence, " ,.?!:;\n\r");
while (token != NULL) {
int found = 0;
for (i = 0; i < count; i++) {
if (strcmp(words[i], token) == 0) {
freq[i]++;
found = 1;
break;
}
}
if (!found) {
strcpy(words[count], token);
freq[count]++;
count++;
}
token = strtok(NULL, " ,.?!:;\n\r");
}
// 输出结果
for (i = 0; i < count; i++) {
printf("%s: %d\n", words[i], freq[i]);
}
return 0;
}
```
该程序首先要求用户输入一个字符串,然后将字符串中的所有单词转换为小写字母,以便于比较。接着使用 `strtok()` 函数将字符串分离成单独的单词,并统计每个单词出现的次数。最后输出每个单词及其出现次数。
词频统计程序C语言实现
以下是一个简单的词频统计程序的C语言实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_WORD_LEN 50 // 单词最大长度
#define MAX_WORD_NUM 1000 // 最大单词数
typedef struct {
char word[MAX_WORD_LEN]; // 单词
int count; // 出现次数
} WordCount;
int main() {
char text[100000]; // 存储输入文本
WordCount words[MAX_WORD_NUM]; // 存储单词及其出现次数
int wordCount = 0; // 实际单词数
char *token; // 分割后的单词
char delim[] = " ,.?!\"()\n\t"; // 分割符
int i, j, found;
// 读取输入文本
printf("请输入文本:\n");
fgets(text, sizeof(text), stdin);
// 分割字符串,统计单词出现次数
token = strtok(text, delim);
while (token != NULL) {
found = 0;
// 检查该单词是否已经出现过
for (i = 0; i < wordCount; i++) {
if (strcmp(words[i].word, token) == 0) {
words[i].count++;
found = 1;
break;
}
}
// 如果单词未出现过,则加入单词列表
if (!found) {
if (wordCount >= MAX_WORD_NUM) {
printf("单词数超过最大值!\n");
break;
}
strcpy(words[wordCount].word, token);
words[wordCount].count = 1;
wordCount++;
}
token = strtok(NULL, delim);
}
// 按出现次数从大到小排序
for (i = 0; i < wordCount-1; i++) {
for (j = i+1; j < wordCount; j++) {
if (words[i].count < words[j].count) {
WordCount temp = words[i];
words[i] = words[j];
words[j] = temp;
}
}
}
// 输出结果
printf("单词\t\t出现次数\n");
for (i = 0; i < wordCount; i++) {
printf("%-15s%d\n", words[i].word, words[i].count);
}
return 0;
}
```
该程序首先读取用户输入的文本,然后使用strtok()函数分割文本,提取出每个单词。对于每个单词,程序检查其是否已经出现过。如果出现过,则将该单词出现次数加1;如果未出现过,则将该单词加入单词列表,并将其出现次数初始化为1。最后,程序按照单词出现次数从大到小排序,并输出结果。
阅读全文