编写一个c程序。一个以 . 结尾的简单英文句子,单词之间用单个空格分隔,没有缩写形式和其它特殊形式,求句子中的最长单词。 输入格式 输入一行字符串,表示这个简单英文句子,长度不超过500。 输出格式 该句子中最长的单词。如果多于一个,则输出第一个。
时间: 2024-12-22 16:31:20 浏览: 8
为了编写一个简单的C程序来找到一个英文句子中最长的单词,我们可以遵循以下步骤:
1. 定义一个函数来接受输入的字符串,然后分割它成单词数组。
2. 初始化一个变量来存储当前找到的最长单词及其长度。
3. 遍历单词数组,比较每个单词的长度,如果找到比当前最长单词更长的,更新最长单词信息。
4. 返回最长单词。
以下是C程序实现的示例:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h> // 使用tolower()函数处理大小写
// 函数来分割输入的字符串成单词数组
char** split_string(char* sentence) {
int word_count = 0;
char* current_word = strtok(sentence, " ");
while (current_word != NULL) {
word_count++;
current_word = strtok(NULL, " ");
}
char** words = (char**)malloc(sizeof(char*) * word_count);
current_word = strtok(sentence, " ");
int index = 0;
while (current_word != NULL) {
words[index++] = current_word;
current_word = strtok(NULL, " ");
}
return words;
}
// 比较单词长度并返回最长的单词
char* longest_word(char** words, int count) {
char* longest = words[0];
int longest_length = strlen(words[0]);
for (int i = 1; i < count; i++) {
if (strlen(words[i]) > longest_length) {
longest = words[i];
longest_length = strlen(words[i]);
}
}
return longest;
}
int main() {
char input[501];
fgets(input, sizeof(input), stdin);
input[strcspn(input, "\n")] = '\0'; // remove newline character
char** words = split_string(input);
int word_count = split_string(input)[0] == NULL ? 0 : strlen(split_string(input)[0]); // Check for empty string
char* longest = longest_word(words, word_count);
free(words); // Free dynamically allocated memory
printf("The longest word in the sentence is: %s\n", longest);
return 0;
}
```
这个程序首先读取输入的句子,然后将其分割成单词。接着找出最长的单词并输出。请注意,由于`fgets()`可能截断最后的一个单词,因此需要额外检查单词数组是否为空。此外,在结束时别忘了释放动态分配的内存。
阅读全文