-
找出每个单词的频率的程序
请高手改正下关于读取一个
.txt
文件,找出每个单词的频率的程序
谢谢了!
用
C
语言读取一个现有的
E:
文件(英文文章,有标点符号)
,内含少于
500
个不
同单词,打印出每个 单词及其频率,并找出频率最高的前
20
个单词排序和频率最低的
10
个单词 。
知识点:不要用链表什么的,很基本的用到指针,
malloc,fopen,fscanf
这些就好
以下是我的
思维不是很清晰
错误比较多,请改正下
谢谢了
#include
#include
#include
void lowercase_remove_punct(char *original_string, char *processed_string)
{
int i1, i2;
char c;
for (i1=0, i2=0; i1
{
c = original_string[i1];
if ((c>='A') && (c<='Z'))
processed_string[i2++] = original_string[i1] - 'A' + 'a';
if (((c>='a') && (c<='z')) || (c=='''))
processed_string[i2++] = original_string[i1];
}
processed_string[i2] = '0';
} /*
大小写转化
除去标点符号的一个方程
*/
int sort_max(int *str_wordnum,int n)
{
int i,j,k,temp,*str_num;
for (i=0;i
{k=i;
for (j=i+1;j
k=j;
if(k!=i)
{temp=*(str_wordnum+i);
*(str_num+i)=*(str_num+k);
*(str_num+k)=temp;
return *str_wordnum; /*
后面用到的一个排序筛选频率最高的
20
个单词
的一个方程
*/
}
int sort_min(int *str_wordnum,int n)
{
int i,j,k,temp;
for (i=0;i
{k=i;
for (j=i+1;j
k=j;
if(k!=i)
{temp=*(str_wordnum+i);
*(str_num+i)=*(str_num+k);
*(str_num+k)=temp;
return str_wordnum;
}
/*
后面用到的一个排序筛选频率最低的
10
个单词的一个方程
*/
main()
{
int i,c,x;
int words_copied=0;
char *str_wordlist,in_string,st;
int new_wordlist;
FILE *fp;
FILE *input_file;
FILE *output_file;
if((input_file=fopen(
printf(
else
{
while ((c=getc(input_file))!=EOF)
{
putc(c,output_file);
words_copied++;
/*words_copied
是每统计一个单词
数量加
1
后面
malloc
动态分
配用的
*/
}
str_wordlist=(char*)malloc(words_ copied*sizeof(char*));
str_wordlist=fscanf(input_file,
%s
所有单词输入进一个新的数组
in_string
里面方便调用
*/
lowercase_remove_punct(st r_wordlist,words_copied);
/*
调用转化大小写,除标点的方程
*/
printf(
%s
这步应该可以删除的
我想看看进展到这里如何才加上的
看看筛选成功否
*/
return 0;
}
}
while(fscanf(fp,
{
found=0;
for(i=0;i
{
if(strcmp(wordlist[i].word,st)==0) /*STRCMP
比较
找到一个新单词
FOUND
就
+1*/
{
wordlist[i].num++;
found=1;
break; /*
调用转化大小写,除标点的方程
*/
}
}
if(!found)
{
strcpy(wordlist[i].word,st);
wordlist[i].num=1;
wordnum++; /*
没找到的话
就
STRCOPY*/
}
}
fclose(fp);
for(i=0;i<19;i++) /*
调用排序频率高低的方程,
可能错的
这里我也很纠结
*/
printf(
sort1(str_wordnum,1);
printf (
printf(
for(i=0;i<9;i++)
printf(
sort2(str_wordnum);
printf (
printf(
sort2(str_wordnum);
return 0;
}
#include
#include
#include
void lowercase_remove_punct(char *original_string, char *processed_string)
{
int i1, i2;
char c;
for (i1=0, i2=0; i1
c = original_string[i1];
if ((c>='A') && (c<='Z'))
processed_string[i2++] = original_string[i1] - 'A' + 'a';
if (((c>='a') && (c<='z')) || (c=='''))
processed_string[i2++] = original_string[i1];
}
processed_string[i2] = '0';
}
int sort_max(int *str_wordnum,int n)
{
int i,j,k,temp,*str_num;
for (i=0;i
for (j=i+1;j
k=j;
if(k!=i)
{temp=*(str_wordnum+i);
*(str_num+i)=*(str_num+k);
*(str_num+k)=temp;
return *str_wordnum;
}
int sort_min(int *str_wordnum,int n)
{
int i,j,k,temp;
for (i=0;i
-
-
-
-
-
-
-
-
本文更新与1970-01-01 08:00,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/556991.html
-
上一篇:没有了
下一篇:没有了
的相关文章
-
余华爱情经典语录,余华爱情句子
余华的经典语录——余华《第七天》40、我不怕死,一点都不怕,只怕再也不能看见你——余华《第七天》4可是我再也没遇到一个像福贵这样令我难忘的人了,对自己的经历如此清楚,
-
心情低落的图片压抑,心情低落的图片发朋友圈
心情压抑的图片(心太累没人理解的说说带图片)1、有时候很想找个人倾诉一下,却又不知从何说起,最终是什么也不说,只想快点睡过去,告诉自己,明天就好了。有时候,突然会觉得
-
经典古训100句图片大全,古训名言警句
古代经典励志名言100句译:好的药物味苦但对治病有利;忠言劝诫的话听起来不顺耳却对人的行为有利。3良言一句三冬暖,恶语伤人六月寒。喷泉的高度不会超过它的源头;一个人的事
-
关于青春奋斗的名人名言鲁迅,关于青年奋斗的名言鲁迅
鲁迅名言名句大全励志1、世上本没有路,走的人多了自然便成了路。下面是我整理的鲁迅先生的名言名句大全,希望对你有所帮助!当生存时,还是将遭践踏,将遭删刈,直至于死亡而
-
三国群英单机版手游礼包码,三国群英手机单机版攻略
三国群英传7五神兽洞有什么用那是多一个武将技能。青龙飞升召唤出东方的守护兽,神兽之一的青龙。玄武怒流召唤出北方的守护兽,神兽之一的玄武。白虎傲啸召唤出西方的守护兽,
-
不收费的情感挽回专家电话,情感挽回免费咨询
免费的情感挽回机构(揭秘情感挽回机构骗局)1、牛牛(化名)向上海市公安局金山分局报案,称自己为了挽回与女友的感情,被一家名为“实花教育咨询”的情感咨询机构诈骗4万余元。