用一个函数实现将一行字符串中最短的单词输出。此行字符串从主函数传递给该函数。假设字符串中包含的单词以空格作为分隔符号,例如”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;

 

 

 

 

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值