您的位置:首页 > 其它

choose the longest word in the line .把字符串中最长的单词输出

2014-08-29 22:25 267 查看
#include<malloc.h>

#include<stdio.h>

int main()

{

char*getstr(void);

// intlongest(char *str,char *word);

intlongest(char string[]);

intalphabetic(char c);

char *str =NULL;char *word = NULL;

intlength,i,j;

printf("Please input one line:\n");

str =getstr();

// word =(char*)malloc(sizeof(char)*1);

// length =longest(str,word);

printf("Thelongest word in thi text is:");

for(i =longest(str),j = 0;alphabetic(str[i]);i++,j++)//input the longestword.

{

printf("%c",str[i]);

}

printf("\nits length is %d",j);

return0;

}

char * getstr(void)

{

char c,*str=NULL;

int n=0;

while (1)

{

c=getchar();

str=(char*)str?realloc(str,sizeof(char)*++n):malloc(sizeof(char)*++n);

if (c=='\n'||c==EOF)

{

str[n-1]='\0';

break;

}//if

str[n-1]=c;

}

return str;

}

int alphabetic(char c)

{

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))

return 1;

else return0;

}

int longest(char string[])

{

int i,length= 0,flag = 0,place = 0,point;

for(i =0;i<=strlen(string);i++)

{

if(alphabetic(string[i]))

{

if(flag==0)

{

point = i;

flag = 1;

}

else

{

flag++;

}

}

else

{

if(flag>=length)

{

length = flag;

place = point;

}

flag = 0;

}//else

}//for

returnplace;

}//longest

注释掉的是本人写的,同过参数传递的方式获取单词长度length/单词word。测试用例比较简单,目前未发现bug。

未注释掉的则是根据教材修改的,实现的也是同上功能(比教材多一点功能),经过严格的白盒测试,基本无bug。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: