开发者社区> 问答> 正文

单词统计问题 C或C++解决

[题目描述]统计若干行英文中单词的个数和每个单词出现的次数。 [输入]若干行英语。 [输出]单词数量及每个单词出现的次数。

展开
收起
a123456678 2016-03-05 10:59:00 1599 0
1 条回答
写回答
取消 提交回答
  • #include
    #include
    struct word
    {
    char c[30];
    int n;
    }w[10000];
    
    main()
    {
    FILE *fp;
    char b[30],ch;
    int i=0,m=1,j=0,k=0,t=0,flag=0;
    fp=fopen("d://a.txt","r+");
    while((ch=fgetc(fp))!=EOF)
    { 
    if('A'<=ch&&ch<='Z') ch=ch+32;
    
    if('a'<=ch && ch<='z')
    {b[i]=ch;i++;flag=1;}
    else
    {
    if(ch=='-'&&(ch=fgetc(fp))=='\n')
    {
    flag=0;
    }
    
    else
    {
    if(flag==1)
    { b[i]='\0';i=0;flag=0;m=0;
    for(j=0;j<k;j++)
    {
    if(strcmp(b,w[j].c)==0)
    {m=1;break;}
    }
    if(m) w[j].n++;
    else
    {w[k].n=1;strcpy(w[k].c,b);k++;}
    }
    }
    
    if('A'<=ch && ch<='Z') ch+=32;
    if('a'<=ch && ch<='z')
    {b[i]=ch;i++;flag=1;}
    }
    }
    // printf("%d\n",k);
    for(i=0;i printf("\n");
    for(i=0;i {
    t=0;
    while(w[t].n==0) t++;
    for(j=1;j {
    if(w[j].n>w[t].n) t=j;
    else
    if(w[j].n==w[t].n)
    {
    if(strcmp(w[j].c,w[t].c)<0)
    t=j;
    }
    }
    printf("%s %d\n",w[t].c,w[t].n);
    w[t].n=0;
    }
    return 0;
    }
    2019-07-17 18:53:03
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
继承与功能组合 立即下载
对象的生命期管理 立即下载
移动与复制 立即下载