关键词不能为空

当前您在: 主页 > 英语 >

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
1970-01-01 08:00
tags:

-

2021年1月23日发(作者:赢利)
找出每个单词的频率的程序


请高手改正下关于读取一个
.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 if(*(str_wordnum+j)>*(str_wordnum+k))
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 if(*(str_wordnum+j)<*(str_wordnum+k))
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 {k=i;
for (j=i+1;j if(*(str_wordnum+j)>*(str_wordnum+k))
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
    上一篇:没有了
    下一篇:没有了

的相关文章