C语言程序。输入一个句子,寻找其最长的单词。假设这句话中除了字母空格外,只存在两种标点符号——逗号(,)和句号(.)。 要求使用和编写如下函数: 求最长单词并输出,如max(char a[]);返回类型自定。
时间: 2024-12-06 21:23:35 浏览: 37
C语言输入一个整数序列并计算他们的值.rar_C语言输入一个整数序列并计算他们的值_输入序列C语言
5星 · 资源好评率100%
在C语言中,你可以创建一个名为`find_longest_word`的函数来完成这个任务。首先,你需要遍历整个字符串,跳过标点符号并统计单词长度。遇到下一个空格时,就比较当前单词长度与已知最长单词的长度。以下是实现该功能的一个示例:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h> // 包含用于判断字符类型的库
// 定义一个函数来查找并返回最长的单词
char* find_longest_word(const char* sentence) {
int len = strlen(sentence); // 获取字符串长度
char longest_word[100] = {0}; // 最长单词的临时存储
char curr_word[100]; // 当前正在处理的单词
int longest_len = 0; // 长度计数器
int curr_word_len = 0; // 当前单词长度
int in_word = 0; // 标记是否在单词中
for (int i = 0; i < len; i++) {
if (isalpha(sentence[i])) { // 判断字符是否为字母
curr_word[curr_word_len++] = tolower(sentence[i]); // 转换为小写并添加到当前单词
in_word = 1;
} else if (in_word) { // 如果在单词中遇到标点符号
curr_word[curr_word_len] = '\0'; // 结束当前单词
if (strlen(curr_word) > longest_len) { // 更新最长单词
strcpy(longest_word, curr_word);
longest_len = strlen(curr_word);
}
curr_word_len = 0; // 重置当前单词长度
in_word = 0; // 退出单词状态
}
}
// 处理最后一个单词
if (in_word && strlen(curr_word) > longest_len) {
strcpy(longest_word, curr_word);
longest_len = strlen(curr_word);
}
// 如果最长单词为空,返回NULL表示无有效单词
if (!longest_word[0]) return NULL;
return longest_word;
}
int main() {
char sentence[] = "Hello, world! This is a test sentence.";
char* longest = find_longest_word(sentence);
if (longest) {
printf("最长的单词是: %s\n", longest);
} else {
printf("没有有效的单词。\n");
}
return 0;
}
```
在这个例子中,`find_longest_word`函数接收一个字符串作为输入,处理其中的每个字符,找出最长的单词并返回。注意,这个版本假设句子中只有一个最长的单词。如果你需要处理可能出现多个最长单词的情况,你需要稍作修改。
阅读全文