最短单词查找(函数)
编程实现将字符串中最短的单词输出,在主函数中输入字符串,编写一个函数完成最短单词的查找,如果有多个相同长度单词,则只输出第一个最短单词。假设单词之间用空格分隔(一个或多个空格),findshort(s1,s2)函数完成s1串是最短单词的查找,找到的最短单词存储于s2中。
输入:一行字符串
输出:最短单词
样例输入
Happy new year
样例输出
new
#include<stdio.h>
void findshort(char *a,char *ws)//用于查找最短单词 void不需要返回值
{
char *p=a;//对于数组,指针定义并初始化时,不需要&
int min=1000;//这里min初始值要足够大,即大于正常单词的长度(因为后面要用min存储最短的单词长度)
char minw[20];//存储最短的单词,单词长度不会超过20,20的空间内容足够了
while(*p!='\0')//判断每一位,直至结束为止
{
if(*p==' ')//遇到''时,p++读取下一位元素
{
p++;
continue;//不进行以下else的内容,跳回至(*p=='')部分
}
else
{
int len=0;//对len(即单词长度)初始化
while(*(p+len)!=' '&&*(p+len)!='\0')//判断空格后有无字母
len++;//有的话len自加,即长度+1
if(len<min)//len比min小的话,进行下文替换
{
min=len;//min存储最短的单词长度
int i;
for(i=0;i<len;i++)
{
minw[i]=p[i];//用minw存储最短的单词,以便后续输出
}
minw[i]='\0';//单词读取结束
}
p+=len;//跳转到下一个单词
}
}
p=minw;//循环结束后用p存储最短的单词
int cnt=0;
while(*p!='\0')//将最短单词替换至ws【】中
{
ws[cnt++]=*p;
p++;
}
ws[cnt]='\0';
}
int main()
{
char a[1000],ws[20];
gets(a);//输入字符串
findshort(a,ws);//调用函数
printf("%s",ws);
return 0;
}
编译运行