-
找出每个单词的频率的程序
请高手改正下关于读取一个
.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
-
上一篇:没有了
下一篇:没有了
的相关文章
-
爱心与尊严的高中作文题库
1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。
-
爱心与尊严高中作文题库
1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。
-
爱心与尊重的作文题库
1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有
-
爱心责任100字作文题库
1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它
-
爱心责任心的作文题库
1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它
-