#include<stdio.h>
#include<string.h>
/*以下6行,函數alphabetic,判斷是否為字母*/
int alphabetic(char c)
{
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else return(0);
}
/*以下30行,函數longest,計算最長單詞的起始位置。*/
int shortest(char string[])
{
int len=1,i,flag,length=strlen(string),place=0,point;
/*flag表示單詞是否開始,flag=0表示未開始,flag=1表示單詞開始;
len表示單詞以累計的字母個數;length表示先前單詞中最短單詞的長度;
point表示當前單詞的起始位置;place表示最長單詞的起始位置.*/
for(i=0;i<=strlen(string);i++)
{
if(alphabetic(string[i]))/*判斷是否為字母*/
{
if(flag)/*是,開始*/
{
flag=0; point=i;
}
else len++;/*進入計算,+1*/
}
else/*不是,比較已統計*/
{
flag=1;
if(len<=length)
{
length=len;
place=point;
}
len=0;
}
}
return(place);
}
/*以下14行,主函數,調用shortest計算最長單詞的起始位置,並輸出*/
void main()
{
char line[1024];
int i,n=0;
printf("please input one line:\n");
gets(line);
printf("The shortest word is :");
for(i=shortest(line);alphabetic(line[i]);i++)
{
printf("%c",line[i]);
n++;
}
printf("\nThe length is %d.\n",n);
}