-
找出每个单词的频率的程序
请高手改正下关于读取一个
.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
-
上一篇:没有了
下一篇:没有了
的相关文章
-
人生最落魄最穷的感悟人性的句子,人生最落魄最穷的感悟人性的句子图片
最穷最落魄的经典句子只有在落魄时才懂,愿拉你一把的人何其少。只有在最穷时才懂,再好的感情也难敌现实,人不贪钱却都怕吃苦。2落难时总能看清一些人,一些人不值得!众志成
-
女神节祝福语句简短唯美,女神节祝福语句简短唯美图片
女神节祝福语简短温馨寄语1、八妇女节到此,发条短信祝福你,愿你青春不变,笑容甜甜。4成熟中有丝青涩,艳丽中有丝高贵,优雅中有丝自恋,纯洁中有丝邪念,浪漫中有丝童真,微
-
正能量句子励志短句子及感悟,很暖很治愈的短句
人生感悟正能量励志的句子1、生命必须穿过黑暗才能看到光明。人生中有许多错误,是因为我们不坚持,不努力,然后欺骗自己说一切都是命运。小不知道命运再好,都要经历风雨与黑
-
每日清晨祝福语大全,每日清晨祝福语大全遂宁
每日早上好的祝福语短句1、短信一条,祝福送到;短信一条,关怀送到;短信一条,添衣加帽;短信一条,烦恼丢掉;短信一条,开心笑笑;短信一条,幸福报道,祝你早上安好。春天
-
处理婆媳关系最好的办法,敢和婆婆翻脸的女人
怎样处理好婆媳关系1、如何才能处理好婆媳关系1如何才能处理好婆媳关系不要随便向老公告状婆媳相处过程中,总有些磕磕碰碰,作媳妇的要学会多多包容,以宽容的心态去对待老人家
-
给领导早晨的祝福短信,给领导早上问候语正能量
给领导发微信祝福语怎么说?给领导祝福语如下:很荣幸过去的一年里能在你的领导下工作和学习,祝你在新的一年里健康如意,马到成功。在新春里,我举起杯,任晶莹的思绪,悄悄地