山大 23:57:13
/* 输入完单词后不用再加空格!如果是两个单词一样短还不能实现*/
#include<stdio.h>
#include<string.h>
void main(){
int f(char str[],char str1[],int lengths);
int nums,lengths,start,start1,i,j,k,po;
char str[40],str1[10],str2[40];
gets(str);
lengths=strlen(str);
start=f(str,str1,lengths);
nums=strlen(str1);
po=nums;
printf("The shortest vocabulary is:%s",str1);
do{
for(i=0;i<start-1;i++)
str2[i]=str[i];
for(i=start-1,j=start+nums+1;i<lengths-nums-2;i++,j++)
str2[i]=str[j];
str2[i]='/0';
k=strlen(str2);
start=f(str2,str1,k);
printf(" %s/n",str1);
nums=strlen(str2);
for(i=0;i<strlen(str2);i++)
str[i]=str2[i];
str[i]='/0';
}
while(strlen(str1)==po);
}
int f(char str[],char str1[],int lengths){
int i,j,end,start=0,k;
for(i=0;i<lengths;i++){
if(str[i]==' '){
end=i-1;
k=end-start;
break;
}
}
for(i=end+2;i<=lengths;i++){
if(str[i]==' '||str[i]=='/0')
if(k>(i-end-3)){
start=end+2;
end=i-1;
}
}
for(i=start,j=0;i<=end;i++,j++)
str1[j]=str[i];
str1[j]='/0';
return start;
}