首页 > 用户发贴区 > 编程问题提问区 > 找一行中字符串最长的单词,并将其输出
2007
07-05

找一行中字符串最长的单词,并将其输出

写一函数,输入一行字符,将此字符串中最长的单词输出。


结果不对。


程序:


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;
     int i;
     int length=0;
     int flag=1;
     int place=0;
     int point;


     for(i=0;i<=strlen(string);i++)
       if(alphabetic(string[i]))            /* 检查是否是字母,是则flag=0,将i值给point */
         if(flag)
           {
              point=i;
              flag=0;
           }
          else
            len++;                    /* 当前单词已累计的个数 */
       else
         {
            flag=1;


            if(len>=length)
              {
                 


                 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”);


     getch ();
     return 0;


}


找一行中字符串最长的单词,并将其输出》有 2 条评论

  1. xstar 说:

    源代码中length在循环过程中没赋值,始终为零。
    len在循环过程中,没有初始化为0,始终在增加!

    [code]
     int pos_max = -1; //保存最长一个单词的开头
     int len_max  = 0; //最长单词的长度

     int pos_cur  = -1; //当前单词的开头
     int len_cur   = 0;  //当前单词的长度

     int pos        = 0;  //当前判断的字符

     char string[100] = "i am like the world! helloworld! haha!";
     char maxword[100];

     for ( pos = 0; pos < strlen( string ); pos++ ) {
      if( alphabetic( string[ pos ] ) == 1 ) { //是否是英文字符
       if( pos_cur == -1 ) {
        pos_cur = pos;
       }
       len_cur++;
      } else {  //不是
       if ( len_cur > len_max ) { //判断
        pos_max = pos_cur;
        len_max = len_cur;
       }
       //初试化当前单词
       pos_cur = -1;
       len_cur = 0;
      }
     }

     maxword[0] = '\0';
     if( len_max > 0 ) {
      strncpy( maxword, &string[pos_max], len_max );
      maxword[len_max] = '\0';
     }

     printf( maxword );
    [/code]

  2. qiudan85 说:

    非常感谢,我想了好久都没有想出来。

留下一个回复