1178:単語数

1178:単語数

トピックの説明
記事内の個別の単語の総数を数えます。
入力
データには複数のセットがあり、各セットは行であり、各セットは小さな記事です。各小冠詞は、大文字と小文字の文字とスペースで構成され、句読点はなく、#が検出された場合の入力の終わりです。記事あたりの単語数は1000未満で、各単語は最大30文字で構成されます。
出力
各グループは、記事内の個別の単語の総数を表す1つの整数のみを独自の行に出力します。
サンプル入力
あなたは私の友達です

サンプル出力コピー
4
ソース/分類

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 100

int main(){
    
    
    char s[30000];
    char *p[1000];


    while(gets(s),strcmp(s,"#")!=0){
    
    
        int j=0;//统计单词的个数
        int k=0;//每个单词的字符
        int count=0;//不重复的单词个数
        
        for(int i=0;i<strlen(s);i++){
    
    
            if(s[i]!=' '){
    
    
                k=0;
                p[j]=(char *)malloc(sizeof(char)*30);

                for(i;s[i]!=' '&&i<strlen(s);i++){
    
    
                    p[j][k++]=s[i];
                }
                p[j][k]='\0';

                j++;
            }
        }

        //第i个单词的后面没有与它相同的就+1,结果需要再+最后一个单词
        int f=1;//表示某一单词的后面没有与之重复的
        for(int i=0;i<j-1;i++){
    
    
            for(int k=i+1;k<j;k++){
    
    
                    f=1;
                    if(strcmp(p[i],p[k])==0){
    
    
                        f=0;
                        break;
                    }
            }
            if(f==1) count++;
        }
        printf("%d\n",count+1);

    }
    return 0;
}

おすすめ

転載: blog.csdn.net/weixin_44500344/article/details/108127730