题目描述
输入n和n个字符串,输出其中最短的字符串。若长度相同则输出出现较早的那一个。
输入:第一行是一个整数n,后面跟着n行,每行包括一个由字母和数字和空格组成的字符串,长度不超过1000。
输出:长度最短的字符串,若长度相同则输出出现较早的那一个。
样例输入 Copy
5 How are you! Happy Good! Hello world! Thinks
样例输出 Copy
Happy
程序代码
#include<stdio.h>
#include<string.h>
int main(){
int n;
scanf("%d",&n);//输入测试的字符串个数
getchar();//吸收换行符
int min=10000;
int flag;//flag标记最小字符串的二维下标
char a[n][1001];//定义一个二维字符数组
for(int i=0;i<n;i++){
gets(a[i]);//因为字符串中有空格,不能用scanf("%s",a[i]),只能用gets(a[i])读入;
if(min>strlen(a[i])){//比较输入的字符串长度,遇到更小的字符串时,更新min和flag
min=strlen(a[i]);
flag=i;
}
}
puts(a[flag]);//最后用puts()输出最小的字符串即可
return 0;
}