统计不同单词数量

系统 1587 0

杭电2072,因为错误的理解了题目,没有注意到“不同”,所以我写的程序只能够检测出单词的数量,代码如下:

      #include<stdio.h>
      
        

#include
      
      <
      
        string
      
      .h>


      
        /*
      
      
        

 * scanf("%s")  遇到空格,tab,和回车时结束,如s s s s表示为4个字符串

 * 因此要读入带有空格的字符串使用 gets()方法。

 
      
      
        */
      
      
        char
      
       str[
      
        10000
      
      
        ];


      
      
        int
      
      
         main(){

    
      
      
        char
      
      
         end ;

    
      
      
        int
      
      
         i, len, count;    

    
      
      
        while
      
      (
      
        1
      
      
        ){

        count 
      
      = 
      
        0
      
      ;i = 
      
        0
      
      
        ;

        gets(str);

        
      
      
        if
      
      (str[
      
        0
      
      ] == 
      
        '
      
      
        #
      
      
        '
      
      ) 
      
        break
      
      
        ;

        len 
      
      =
      
         strlen(str);

        
      
      
        while
      
      ( i <
      
         len ){

            
      
      
        if
      
      (str[i] != 
      
        '
      
      
        '
      
      ){
      
        //
      
      
        如果不是空格那么就是单词,故数量加一
      
      

                count++
      
        ;

                
      
      
        do
      
      {              
      
        //
      
      
        跳过这个单词。
      
      
        if
      
      (i != len - 
      
        1
      
      ) i++
      
        ;

                     
      
      
        else
      
      
        break
      
      
        ;        

                }
      
      
        while
      
      (str[i] != 
      
        '
      
      
        '
      
      );
      
        //
      
      
        跳过这个单词。
      
      
                    }

            i
      
      ++
      
        ;

        }

        printf(
      
      
        "
      
      
        %d\n
      
      
        "
      
      
        , count);

    }
      
      
        //
      
      
        while
      
      
        return
      
      
        0
      
      
        ;

}
      
    

虽然是错误代码,但也有一些收获,其中对scanf对于字符串的使用有了更深刻的认识。若要得出不同的单词数量,我们首先回想到将读到的单词装入set中,然后就可以得到set大小,即单词的数量。以下为使用set的代码。

      #include<iostream>
      
        

#include
      
      <
      
        set
      
      >
      
        

#include
      
      <
      
        string
      
      >




      
        using
      
      
        namespace
      
      
         std;




      
      
        set
      
      <
      
        string
      
      >
      
         words;




      
      
        int
      
      
         main(){

    
      
      
        string
      
       str = 
      
        ""
      
      
        ;

    
      
      
        char
      
      
         c;

    
      
      
        while
      
      ((c = cin.
      
        get
      
      ()) != 
      
        '
      
      
        #
      
      
        '
      
      
        ){

        
      
      
        while
      
      (c != 
      
        '
      
      
        '
      
       && c != 
      
        '
      
      
        \n
      
      
        '
      
      
        ){
        
          //
        
        
          跳过这个单词
        
        

            str 
      
      +=
      
         c;

            c 
      
      = cin.
      
        get
      
      
        ();

        }
        
          //
        
        
          跳过这个单词
        
      
      
        if
      
      
        (str.length()){

            words.insert(str);

            str 
      
      = 
      
        ""
      
      
        ;

        }

        

        
      
      
        if
      
      (
      
        '
      
      
        \n
      
      
        '
      
       ==
      
         c){

            cout 
      
      << words.size() <<
      
         endl;

            words.clear();str
      
      =
      
        ""
      
      
        ;

        }

    }
      
      
        //
      
      
        while    
      
      
        return
      
      
        0
      
      
        ;

}
      
    

 

统计不同单词数量


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论