http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=397#problem/G

这道题要求我们将所给的句子中的单词转换为小写并按字母表排序,重复的只算一次,并注意有重复出现的单词,总数可能超过5000

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
char s[100010][210]={'\0'};
int stringcmp(const void *a,const void *b){
    return strcmp((char *)a,(char *)b);
}
int main(){
    char c;
    int i;
    int n=0,len=0;
    while((c=getchar())!=EOF){
        if(isalpha(c))
            s[n][len++]=tolower(c);
        else if(isalpha(s[n][0])){
            s[n++][len]='\0';
            len=0;
        }
    }
    qsort(s,n,sizeof(s[0]),stringcmp);
    for(i=0;i<n;i++)
        if(strcmp(s[i],s[i+1]))
            puts(s[i]);
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation