1395 - 最长&最短文本
输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
题目输入
输入包括多行字符串,字符串的长度len,(1<=len<=1000)。
题目输出
按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
输入/输出样例
题目输入
hello she sorry he
题目输出
he hello sorry
C语言解答
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { char **str; int *len; int strlength; int i=0,j; int lenmin,lenmax; str = (char **)malloc(sizeof(char *)*1); str[i] = (char *)malloc(sizeof(char)*1001); len = (int *)malloc(sizeof(int)*1); // while(i<5) while(gets(str[i])) // while(scanf("%s",str[i]) != EOF) { /* gets(str[i]);*/ strlength = strlen(str[i]); if(i==0) { lenmin = lenmax = strlength; } else { if(strlength < lenmin ) { lenmin = strlength; } if(strlength > lenmax) { lenmax = strlength; } } len[i] = strlength; i++; str = (char**)realloc(str,sizeof(char *)*(i+1)); str[i] = (char*)malloc(sizeof(char)*1001); len = (int *)realloc(len,sizeof(int)*(i+1)); } for(j=0;j<i;j++) { if(len[j] == lenmin) { puts(str[j]); } } for(j=0;j<i;j++) { if(len[j] == lenmax) { puts(str[j]); } } free(len); for(j=0;j<i;j++) { free(str[j]); } free(str); return 0; }
C++解答
#include <stdio.h> #include <string.h> char str[1000][1100]; // 定义储存字符串的变量 int count[1000]; // 定义记录字符串长度的变量 int main(){ int numOfStrings = 0; // 记录字符串的总数 int maxValue=0x80000000, minValue=0x7FFFFFFF; // 还记得求最大值最小值时如何定义的吗 while(gets(str[numOfStrings])){ // 读取字符串 count[numOfStrings] = strlen(str[numOfStrings]); if(maxValue < count[numOfStrings]){ maxValue = count[numOfStrings]; // 获得最大值 } if(minValue > count[numOfStrings]){ minValue = count[numOfStrings]; // 获得最小值 } numOfStrings++; // 注意字符串的数目增加了 } // 下面输出长度最小的字符串 for(int i=0; i<numOfStrings; i++){ if(count[i] == minValue){ puts(str[i]); } } // 下面输出长度最大的字符串 for(int i=0; i<numOfStrings; i++){ if(count[i] == maxValue){ puts(str[i]); } } return 0; }