C语言统计单词的长度
时间: 2024-11-09 08:20:03 浏览: 70
在C语言中统计单词的长度通常涉及到字符串处理。你可以通过遍历字符串,遇到空格或其他分隔符就停止计数,然后累加字符直到下一个分隔符。下面是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
int word_length(char str[]) {
int len = 0;
while (str[len] != '\0') { // 遍历到字符串结束前
if (str[len] == ' ' || str[len] == '\t' || str[len] == '\n') { // 分隔符包括空格、制表符和换行符
break; // 如果找到分隔符,则停止计数
}
len++; // 每次检查下一个字符
}
return len; // 返回单词的实际长度
}
int main() {
char input[] = "Hello, world! This is a test.";
int length = word_length(input);
printf("The word length of '%s' is %d.\n", input, length);
return 0;
}
```
在这个例子中,`word_length`函数计算输入字符串中第一个单词的长度。如果你想统计整个字符串中的所有单词长度,你需要对每个单词分别调用这个函数。
相关问题
头歌c语言统计最长单词长度
在C语言中,要统计输入字符串中最长单词的长度,你可以采用分隔单词、遍历并记录最大长度的方式来实现。以下是简单的步骤:
1. 定义一个函数接收字符串作为输入参数。
2. 使用`strtok`函数将字符串按空格分割成单词数组。这个函数会返回每个单词的首地址,并在原始字符串中插入分隔符(这里是空字符'\0'),直到遇到字符串结束为止。
3. 遍历单词数组,对每个单词计算长度。可以使用`strlen`函数获取单词的字节数(考虑到可能包含非ASCII字符)。
4. 比较当前单词的长度和之前记录的最大长度,如果当前单词更长,则更新最大长度。
5. 循环结束后,最大长度即为输入字符串中最长单词的长度。
下面是一个简化的示例代码片段:
```c
#include <stdio.h>
#include <string.h>
// 函数用来找到并返回最长单词长度
int findLongestWordLength(const char* str) {
const char *token;
int maxLength = 0;
token = strtok(str, " "); // 分割单词
while (token != NULL) {
int wordLength = strlen(token);
if (wordLength > maxLength) {
maxLength = wordLength;
}
token = strtok(NULL, " "); // 继续查找下一个单词
}
return maxLength;
}
int main() {
char input[100];
printf("请输入一段英文句子:");
fgets(input, sizeof(input), stdin); // 读取用户输入
input[strcspn(input, "\n")] = '\0'; // 移除行尾换行符
int longestLength = findLongestWordLength(input);
printf("输入字符串中最长单词的长度为:%d\n", longestLength);
return 0;
}
```
c语言统计单词频率
以下是使用C语言统计单词频率的示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_WORD_LEN 50 // 最大单词长度
#define MAX_WORDS 1000 // 最多单词数
int main()
{
char text[MAX_WORDS][MAX_WORD_LEN];
int count[MAX_WORDS] = {0};
int num_words = 0;
// 从标准输入读入文本,以空格、换行符、制表符作为分隔符
char delim[] = " \n\t";
char *word = strtok(gets(text[0]), delim);
while (word != NULL && num_words < MAX_WORDS)
{
strcpy(text[num_words], word);
num_words++;
word = strtok(NULL, delim);
}
// 统计每个单词出现的次数
for (int i = 0; i < num_words; i++)
{
count[i]++; // 先加上自己出现的一次
for (int j = i + 1; j < num_words; j++)
{
if (strcmp(text[i], text[j]) == 0)
{
count[i]++;
count[j] = -1; // 标记已经统计过了,避免重复计数
}
}
}
// 输出单词及其出现次数
printf("Word\tFrequency\n");
for (int i = 0; i < num_words; i++)
{
if (count[i] > 0)
{
printf("%s\t%d\n", text[i], count[i]);
}
}
return 0;
}
```
该程序从标准输入读入文本,使用空格、换行符、制表符作为分隔符,将文本中的每个单词存储到一个字符串数组中,并逐个统计每个单词出现的次数。最后输出每个单词及其出现次数。注意,该程序只能处理包含不超过1000个单词、每个单词不超过50个字符的文本。如果需要处理更大的文本,需要根据实际情况修改程序。
阅读全文