问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

采用C或C++编程,对出现的单词次数进行统计,并按照出现次数从低到高排序

发布网友 发布时间:2022-05-05 02:24

我来回答

3个回答

热心网友 时间:2023-10-05 10:24

//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"
#include "ctype.h"
#include "string.h"
struct abc{
int n;
char w[21];
};
void main(void){
struct abc wn[500],t;
int i,j,k,x;
FILE *fp;
if((fp=fopen("intxt.txt","r"))==NULL){
printf("Failed to open the input file...\n");
exit(0);
}
memset((char *)wn,'\0',sizeof(wn));
i=j=0;
while((wn[i].w[j]=getc(fp))!=EOF){
if(isalpha(wn[i].w[j])) j++;
else{
wn[i].w[j]='\0';
for(k=0;k<i;k++)
if(!strcmp(wn[i].w,wn[k].w)){
wn[k].n++;
break;
}
if(k>=i && j) wn[i++].n++;
j=0;
}
}
fclose(fp);
for(j=0;j<i;j++){
for(x=j,k=j+1;k<i;k++)
if(wn[x].n>wn[k].n) x=k;
if(x!=j){
t=wn[j];
wn[j]=wn[x];
wn[x]=t;
}
}
if((fp=fopen("outtxt.txt","w"))==NULL){
printf("Failed to open the output file...\n");
exit(0);
}
for(i=0;i<j;i++){
fprintf(fp,"%s\t%d\n",wn[i].w,wn[i].n);
printf("%s\t%d\n",wn[i].w,wn[i].n);
}
fclose(fp);
}追问能不能给一些详细的注释啊,还有解题思路,谢谢啦

追答说说思路吧。创建了一个结构体,其中有两个元素,一个是单词数组w,另一个是这个单词出现的次数n。在main中声明了一个结构体数级wn,有500个元素,所以本代码只适合不同单词不超过500的情况。从文件中一个字符一个字符地读,存放到结构体数组中的单词数组w中,当读到空格时,把这个空格变成'\0',表示单词结束了;这时再用这个单词与从0下标开始的结构体数组中的单词数组中的单词一次比较,若相等,则对该结构元素中的n增1,而不对结构体数组下标增1,说明单词重复了,下一个单词会覆盖刚刚读到的这个单词;若没有发现相同的单词,就对结构体数组下标增1,同时给这个元素中的n置1,说明是个新单词。再向后读,凡不是字母的都丢弃而不处理,直到遇到一个字母时作为新单词的开始而进行下一轮处理过程。直到遇到文件结束符时结束读取,关闭文件。然后对结构体数组按照n的大小排序,最后输出。

热心网友 时间:2023-10-05 10:25

#include <map>
#include <fstream>

int main(int, char*[])
{
std::map<std::string, int> words;
std::ifstream in("输入文件");
while (in && !in.eof())
{
std::string word;
in >> word;
++words[word];
}

std::multimap<int, std::string> counts;
for (std::map<std::string, int>::const_iterator i = words.begin(); i != words.end(); ++i)
counts.insert(std::make_pair(i->second, i->first));

std::ofstream out("输出文件");
for (std::multimap<int, std::string>::const_iterator i = counts.begin(); i != counts.end(); ++i)
out << i->second << " " << i->first<< '\n';

return 0;
}

热心网友 时间:2023-10-05 10:25

路过!帮顶!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
富士打印机怎么设置ip地址? 超市购物模拟器收银员 微信好友辅助安全登录验证该怎么做 培育钻石和天然钻石本质上有区别吗 培育钻石有哪些优缺点? 买的基金怎么取出来吗? 如何把鸡毛去掉 他先对女孩有好感,女孩对他表白了,但是他一直这样对待女孩?_百度... 主保护包括哪些 经常带孩子散步有哪些好处和坏处? 安装打印机程序时出现can not open output file。求解。该驱动程序是从HP官网上下的,应该不会有问题吧 MAYA的UV编辑器怎么不能导出图片 梦见女儿男朋友的妈妈对我不热不理不采? Failed to open file 这是什么意思? 腾讯零钱通里面的短债债_风险大嘛 前列腺炎会引起死精吗 会不会得了前列腺炎 前列腺炎会引起阳委吗 前列腺炎的问题 前列腺炎会导致什么后果? 前列腺炎 会引起什么后果 前列腺炎问题 前列腺炎会导致什么? 慢性前列腺炎会引起什么疾病? 商场女装一年想要做到300万的业绩,如何提升销售业绩? 怎么看jdk的安装路径 哪种水龙头比较节水?什么是节水龙头? 、下列不属于节水型生活用水器具的是( )。 a、陶瓷密封片系列水嘴 b、感应式 滴漏水龙头属不属于节水型器具 如何区分水龙头是不是节水的? webuploader 上传文件php怎么接受 webuploader php怎么接受上传的文件名 新恢复的XP系统,在安装程序时 出现Unable to open output file 安装不上去! 梦见女儿男朋友对岳母不好 请问Latex出现Unable to open &quot;xxxxx.pdf&quot;. No output PDF file written.编译错误怎么怎么解决? php导出excel的时候提示“failed to open stream: Permission denied in....” 如何用网页实现简单的串口 发送 功能 lol荣誉锁住 。解锁后变成1级,该怎么升级 ,求大佬解答 LOL荣誉等级上有锁是什么意思 想要了解汽车的火花塞,应该怎么做? 汽车配件的别称 汽车维修需要什么工具? 人教版高二化学 (第一章) 汽车刷电脑可以提高提速吗 是什么导致了二人麻将的崛起? 恒大御景湾周边环境怎么样?生活便利吗? 飞机为什么加的是煤油? 恒大御景湾怎么样?好不好?值不值得买? 求教化妆大佬,粉底液怎么用海绵铺开? 舌头两侧有黑斑