描述
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
输入一行句子。输出两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。样例输入
I am studying Programming language C in Peking University
样例输出
Programming
I
#include <stdio.h>
#include <string.h>
int main() {
char a[500]; // 定义一个字符数组a,用于存储输入的字符串
fgets(a, 500, stdin); // 从标准输入读取一行文本,最多读取500个字符,并将读取的内容存储在数组a中
a[strcspn(a, "\n")] = 0; // 使用strcspn函数找到字符串中的换行符的位置,并将其替换为字符串结束符'\0'
char *token = strtok(a, " "); // 使用strtok函数将字符串a按照空格分割成多个子串,第一个子串被赋值给指针token
char longest_word[100] = "", shortest_word[100] = ""; // 定义两个字符数组longest_word和shortest_word,分别用于存储最长和最短的单词
int longest_length = -1, shortest_length = 201; // 定义两个整数变量longest_length和shortest_length,分别用于存储最长和最短单词的长度
while (token != NULL) { // 遍历所有子串
int length = strlen(token); // 计算当前子串的长度
if (length > longest_length) { // 如果当前子串的长度大于已知的最长长度
longest_length = length; // 更新最长长度
strcpy(longest_word, token); // 将当前子串复制到longest_word中
}
if (length < shortest_length) { // 如果当前子串的长度小于已知的最短长度
shortest_length = length; // 更新最短长度
strcpy(shortest_word, token); // 将当前子串复制到shortest_word中
}
token = strtok(NULL, " "); // 使用strtok函数获取下一个子串
}
printf("%s\n", longest_word); // 打印出最长的单词
printf("%s", shortest_word); // 打印出最短的单词
return 0;
}