1、结构体定义:
struct node
{
char str[2000];
int len;
}n[2000], term;注意下面不能用 char strr[2000];
n[i].str = strr;
这样直接赋值。
可以使用strcpy(n[i].str, strr)
2、scanf("%s", s)输入的字符串不能含有空格等。如果要输入含有空格的字符串要使用gets函数。
题目描述
输入多行字符串,请按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。
输入描述:
输入包括多行字符串,字符串的长度len(1<=len<=1000)。输出描述:
按照原文本中的顺序输出其中最短和最长的字符串,如果最短和最长的字符串不止一个,请全部输出。示例1
输入
复制
hello she sorry he输出
复制
he hello sorry
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
char str[2000];
int len;
}n[2000], term;
int main()
{
char strr[2000];
int i=0;
while(gets(n[i].str)!=NULL)
{
// strcpy(n[i].str, strr);
n[i].len = strlen(n[i].str);
i++;
}
int p, q;
for(p=0; p<i-1; p++)
{
int flag = 0;
for(q=i-1; q>p; q--)
{
if(n[q].len<n[q-1].len)
{
term = n[q];
n[q] = n[q-1];
n[q-1] =term;
flag = 1;
}
}
if(!flag)break;
}
printf("%s\n", n[0].str);
for(p=1; p<i; p++)
{
if(n[p].len==n[0].len)
printf("%s\n", n[p].str);
}
printf("%s\n", n[i-1].str);
for(p=i-2; p>=0; p--)
{
if(n[p].len==n[i-1].len)
printf("%s\n", n[p].str);
}
return 0;
}