题目1195:最长&最短文本
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:982
解决:336
-
题目描述:
-
输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
-
输入:
-
输入包括多行字符串,字符串的长度len,(1<=len<=1000)。
-
输出:
-
按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
-
样例输入:
-
hello she sorry he
-
样例输出:
-
he hello sorry
-
来源:
- 2008年华中科技大学计算机研究生机试真题
-
/********************************* * 日期:2013-2-20 * 作者:SJF0115 * 题号: 九度OJ 题目1195:最长&最短文本 * 来源:http://ac.jobdu.com/problem.php?pid=1195 * 结果:AC * 来源:2008年华中科技大学计算机研究生机试真题 * 总结: **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include <limits.h> typedef struct String{ int len;//长度 char str[1001]; }String; String S[10001]; int main() { int i,index = 0; int Max = INT_MIN,Min = INT_MAX; while(scanf("%s",S[index].str) != EOF){ S[index].len = strlen(S[index].str); //最大长度 if(Max < S[index].len){ Max = S[index].len; } //最小长度 else if(Min > S[index].len){ Min = S[index].len; } index++; } //输出最短文本 for(i = 0;i < index;i++){ if(S[i].len == Min){ puts(S[i].str); } } //输出最长文本 for(i = 0;i < index;i++){ if(S[i].len == Max){ puts(S[i].str); } } return 0; }
刚开始让人纠结的是怎样结束输入。最后经由网友明白: -
输入ctrl+Z再输回车,再输一次ctrl+Z再输回车,就可以结束输入