标题:这道题怎么写哇
只看楼主
小晓鸭呀
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2020-4-4
结帖率:40%
 问题点数:0 回复次数:1 
这道题怎么写哇
词频统计 (8分)
输出一行字符,统计出现词的频率。

输入格式:
输出一行字符,用gets()读入,不超过80个字符。每个单词用一个或多个空格分开。单词个数的约定,最多为40个单词,每个单词最长为9。

输出格式:
按出现的顺序输出单词及出现的次数,中间用“:”分隔。每行一个单词及次数。

输入样例:
在这里给出一组输入。例如:

I am a teacher

      
   
输出样例:
在这里给出相应的输出。例如:

I:1
am:1
a:1
teacher:1
搜索更多相关主题的帖子: 单词 出现 字符 输入 输出 
2020-04-19 17:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

int main( void )
{
    // 读入一行字符
    char line[81];
    fgets( line, sizeof(line), stdin );

    // 拆分成一个个单词
    struct {
        char word[10];
        size_t count;
    } ws[40];
    size_t ws_count = 0;
    for( int a=0,b; sscanf(line+a,"%s%n",ws[ws_count].word,&b)==1; )
    {
        a += b;
        ws[ws_count].count = 0;
        ++ws_count;
    }

    // 统计数量(一共就40个单词,那就不排序然后二分查找了)
    for( size_t i=0; i!=ws_count; ++i )
    {
        size_t j;
        for( j=0; strcmp(ws[i].word,ws[j].word)!=0; ++j );
        ++ws[j].count;
    }

    // 输出结果
    for( size_t i=0; i!=ws_count; ++i )
    {
        if( ws[i].count != 0 )
            printf( "%s:%zu\n", ws[i].word, ws[i].count );
    }
}
收到的鲜花
  • return_02020-04-20 09:43 送鲜花  1朵   附言:6666大顺
  • tcxk2020-04-20 09:52 送鲜花  1朵  
2020-04-20 09:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501128-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.335432 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved