题目是:写一函数,输入一行字符,将此字符串中最长的单词输出。
答案一:int alphabetic(char c) /* 判断当前字符是否字母,是返回1,否则返回0 */
{
if ((c>=’a’&& c<=’z’)||(c>=’A’&&c<=’Z’))
return(1);
else
return(0);
}
int longest(char string[]) /* 寻找最长单词的起始位置 */
{ int len=0,i,length=0,flag=1,place=0,point;
for(i=0;i<=strlen(string);i++)
if(alphabetic(string[i])) /* string[i]是字母 */
if(flag) /* 前面不是字母 */
{ point=i;
flag=0;}
else /*string[i]是字母,前面也是字母*/
len++;
else /*string[i]不是字母*/
{ flag=1;
if(len>=length) /*以point位置开始的词如为当前最长的,记住其位置*/
{ length=len;
place=point;
len=0;
}
}
return(place); /*返回最长单词的起始位置*/
}
main( )
{
int i;
char line[100];
printf("Input one line:\n");
gets(line); /*读入一行文本*/
printf("\nThe longest word is :");
for(i=longest(line);alphabetic(line[i]);i++) /*输出最长的单词*/
printf("%c",line[i]);
printf("\n");
}
答案二:cechang(str1,word0)
char str1[100],word0[15];
{int i=0,j=0,t=0;
static char word1[15];
for(;str1[i]!='\0';i++)
{if(!(str1[i]>=97&&str1[i]<=122||str1[i]>=65&&str1[i]<=90))
{t=j;j=0;continue;}
word1[j]=str1[i];j++;
if(j>=t) strcpy(word0,word1);}
}
main()
{char str0[100],longword[15];
gets(str0);
cechang(str0,longword);
puts(longword);
}
为什么我两个在C FREE里面都检测出错,如果要改,应该怎么写?多谢了