这道题怎么写哇
词频统计 (8分)输出一行字符,统计出现词的频率。
输入格式:
输出一行字符,用gets()读入,不超过80个字符。每个单词用一个或多个空格分开。单词个数的约定,最多为40个单词,每个单词最长为9。
输出格式:
按出现的顺序输出单词及出现的次数,中间用“:”分隔。每行一个单词及次数。
输入样例:
在这里给出一组输入。例如:
I am a teacher
输出样例:
在这里给出相应的输出。例如:
I:1
am:1
a:1
teacher:1
2020-04-19 17:05
程序代码:#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 );
}
}
2020-04-20 09:32