1. 程式人生 > >用一個函式實現將一行字串中最短的單詞輸出。此行字串從主函式傳遞給該函式。假設字串中包含的單詞以空格作為分隔符號,例如”Asia Games 2010 is held in GuangZhou.”,其中最短的單詞是”is”和”in”。

用一個函式實現將一行字串中最短的單詞輸出。此行字串從主函式傳遞給該函式。假設字串中包含的單詞以空格作為分隔符號,例如”Asia Games 2010 is held in GuangZhou.”,其中最短的單詞是”is”和”in”。

山大 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;

}