描述
输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。
试输出第1个最长的单词和第1个最短单词。
输入一行句子。输出两行输出:
第1行,第一个最长的单词。
第2行,第一个最短的单词。样例输入
I am studying Programming language C in Peking University
样例输出
Programming I
提示如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。
/*****************************************************************************/
自己本来的思路是:
记录下空格跟逗号的位置,调试完成后,发现当输入只有字符没有空格或者逗号的时候,解不出来。。。。
实在想不出,就百度了。现在贴出,方便自己日后复习。
1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 char juzi[20001]; 6 7 main() 8 { 9 char maxw[101], minw[101], use[101]; 10 int maxlen = 0, minlen = 101, k = 0, len = 0; 11 int i = 0, j = 0; 12 gets(juzi); 13 14 while (juzi[i] != '\0') 15 { 16 if(juzi[i] == ' ' || juzi[i] == ',') 17 { 18 if (k == 1) 19 { 20 use[j] = '\0'; 21 len = strlen(use); 22 if (maxlen < len) 23 { 24 maxlen = len; 25 strcpy(maxw, use); 26 } 27 if (minlen > len) 28 { 29 minlen = len; 30 strcpy(minw, use); 31 } 32 k = 0; 33 j = 0; 34 } 35 } 36 else 37 { 38 use[j] = juzi[i]; 39 k = 1; 40 j++; 41 } 42 i++; 43 } 44 45 use[j] = '\0'; 46 len = strlen(use); 47 if (maxlen < len) 48 { 49 maxlen = len; 50 strcpy(maxw, use); 51 } 52 if (minlen > len) 53 { 54 minlen = len; 55 strcpy(minw, use); 56 } 57 58 cout << maxw << endl; 59 cout << minw << endl; 60 61 return 0; 62 }
出处:https://www.cnblogs.com/huashanqingzhu/p/5075332.html