怎么修改这个代码让他变成每个单词只出现一次

作者&投稿:尹静 (若有异议请与网页底部的电邮联系)
C语言,修改代码使只显示出现次数最多的10个单词及其出现次数~

#include #include #include #define MAXLEN 50 // 单词最大长度#define MAXNUM 8000 // 文章中包含的不同单词数#define NotOpen -1 // 无法打开数据文件#define NoMemory -2 // 堆内存分配失败typedef struct node {char word[MAXLEN];int counter;}words;// 将filename中的内容以单词形式存放在二维数组record中,并返回单词个数。int NumofWords(words **record,char *filename) {int n = 0,i = 0,j,f;char word[MAXLEN],c;FILE *fin;fin = fopen(filename,"rt");if(fin == NULL) {printf("打开文件\"%s\"失败。
",filename);return NotOpen;}while((c = fgetc(fin)) != EOF) {if(c >= 'A' && c = 'a' && c word,word) == 0) { // 有++record[j]->counter; // 更新该单词计数器f = 0;}}if(f == 0) { // 有。i = 0;continue;}record[n] = (words *)malloc(sizeof(node));if(record[n] == NULL) {printf("空间申请失败。
");return NoMemory;}strcpy(record[n]->word,word);record[n]->counter = 1;i = 0;++n;}}fclose(fin);return n;}int main() {int i,j,k,n,len,maxlen;char fmt[15],filename[] = "F:\\VC\\indata1.txt";words temp,**record;record = (node **)malloc(MAXNUM * sizeof(node));if(record == NULL) {printf("内存分配失败。
");exit(NoMemory);}n = NumofWords(record,filename);if(n counter > record[k]->counter)k = j;}if(k != i) {temp = *record[i];*record[i] = *record[k];*record[k] = temp;}}maxlen = record[0]->counter;for(i = 1;i counter;if(maxlen 单词统计数据!
",filename);printf("Word frequency table:
");for(i = 0;i = 10) ? 10 : n;i++) {printf(fmt,record[i]->counter,record[i]->word);free(record[i]);}free(record);return 0;}

不清楚clean_up函数做了什么,整个函数都是新写的,你参考一下吧。

def hapax_legomena_ratio(text): at_least_once = [] at_least_twice = [] total = 0 for s in text: for word in s.strip().split(): word = word.strip('.,;') total += 1 if word not in at_least_once: at_least_once.append(word) elif word not in at_least_twice: at_least_twice.append(word) return (1.0 * (len(at_least_once)-len(at_least_twice)))/total
代码很简单,前面是为了把字符串分割成单词,然后统计单词总数 (total += 1)。
后面是核心部分,统计单词是出现了最少一次,还是最少两次。
if word not in at_least_once: at_least_once.append(word) elif word not in at_least_twice: at_least_twice.append(word)

最后的 return 语句用来计算只出现一次的单词个数 (至少出现一次个数 - 至少出现两次个数 = 只出现一次个数)和总单词数的比率。

功能已实现.
在ie6,火狐下调试没bug.
出现过的单词以后将不会再出现.
(如果一开始是点击随机给出日语发音,
再点击随机给出日语单词,
将会使生词列表重置.我觉得这样会更符合使用习惯).
下面是代码.有注释.copy使用即可.同时我修改了些html,因为有的不规范.
程序整体结构还是沿用了你给的程序的算法,
其实还有很大的重构余地,我没时间了,没进行额外的设计,就照你那个来了.(你上面给的那个太不OO了)

代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html><head><title>日语记单词</title></head><body>
<br/><br/><br/><br/>
<form>
<input id="button1" type="button" value="看日语发音" onclick='showPronunciation();'/>
<input type="text" size="40" value="Pronunciation" id="Pronunciation"/>
<br/><br/>
<input id="button2" type="button" value="看日语单词" onclick='showJapanese()'/>
<input type="text" size="40" name="Japanese" value="Japanese" id="Japanese"/>
<br/><br/>
<input id="button3" type="button" value="看中文意思" onclick='showChinese()'/>
<input type="text" size="40" name="Chinese" value="Chinese" id="Chinese"/>
<br/><br/><br/><br/><br/>

<input type="button" value="随机给出日语发音" onclick='randomPronunciation()'/>

<input type="button" value="随机给出日语单词" onclick='randomJapanese()'/>

<input type="button" value="随机给出中文意思" onclick='randomChinese()'/>
</form>
<div id="alertArea"></div>
<script type="text/javascript">
var PronunciationArray = new Array();
var JapaneseArray = new Array();
var ChineseArray = new Array();

/*
后面这三个数组用于存储看过的单词.
*/
var ProArray = new Array();
var JapArray = new Array();
var ChiArray = new Array();

var nextWord;

var clicked; //click的作用是重置PronunciationArray这三个数组
/*
初始化生词数组,清空已经看过的单词数组
*/
function initWord(){
PronunciationArray[0]="あう ";
JapaneseArray[0]="合う、会う、遭う ";
ChineseArray[0]="见面,合适,遭遇 ";

PronunciationArray[1]="あじわう ";
JapaneseArray[1]="味わう ";
ChineseArray[1]="品尝,鉴赏 ";
//我额外加了几个单词,方便测试,不过我日语苦手,就写了几个简单的.
PronunciationArray[2]="シュ-トPronunciation ";
JapaneseArray[2]="シュ-ト ";
ChineseArray[2]="射门 ";

PronunciationArray[3]="パス Pronunciation";
JapaneseArray[3]="パス ";
ChineseArray[3]="传球 ";

PronunciationArray[4]="タックル Pronunciation";
JapaneseArray[4]="タックル ";
ChineseArray[4]="铲球 ";

PronunciationArray[5]="ドリブル Pronunciation";
JapaneseArray[5]="ドリブル ";
ChineseArray[5]="运球 ";

ProArray = new Array();
JapArray = new Array();
ChiArray = new Array();

}

function randomPronunciation(){

if(clicked != 1){
document.getElementById('alertArea').innerHTML = '';
initWord();
}
if(PronunciationArray.length>0){
nextWord = Math.floor(Math.random()*PronunciationArray.length);
document.getElementById('Pronunciation').value = PronunciationArray[nextWord];
delelteWord(nextWord);
resetButton();
document.getElementById('button1').disabled = true;
document.getElementById('Japanese').value = "";
document.getElementById('Chinese').value = "";
}else{
document.getElementById('alertArea').innerHTML = '已经是最后一个单词了!';
}
clicked = 1;
}
function randomJapanese(){
if(clicked != 2){
document.getElementById('alertArea').innerHTML = '';
initWord();
}
if(JapaneseArray.length>0){
nextWord = Math.floor(Math.random()*JapaneseArray.length);
document.getElementById('Japanese').value = JapaneseArray[nextWord];
delelteWord(nextWord);
resetButton();
document.getElementById('button2').disabled = true;
document.getElementById('Pronunciation').value = "";
document.getElementById('Chinese').value = "";
}else{
document.getElementById('alertArea').innerHTML = '已经是最后一个单词了!';
}
clicked = 2;
}
function randomChinese(){
if(clicked != 3){
document.getElementById('alertArea').innerHTML = '';
initWord();
}
if(ChineseArray.length>0){
nextWord = Math.floor(Math.random()*ChineseArray.length);
document.getElementById('Chinese').value = ChineseArray[nextWord];
delelteWord(nextWord);
resetButton();
document.getElementById('button3').disabled = true;
document.getElementById('Pronunciation').value = "";
document.getElementById('Japanese').value = "";
}else{
document.getElementById('alertArea').innerHTML = '已经是最后一个单词了!';
}
clicked = 3;
}
function showPronunciation() {
if(ProArray.length>=1)
document.getElementById('Pronunciation').value = ProArray[ProArray.length-1];
}
function showJapanese() {
if(JapArray.length>=1)
document.getElementById('Japanese').value = JapArray[JapArray.length-1];
}
function showChinese() {
if(ChiArray.length>=1)
document.getElementById('Chinese').value = ChiArray[ChiArray.length-1];
}
/* 删除刚看过的单词 同时向ProArray,JapArray,ChiArray三个数组push这个单词 */
function delelteWord(i){
ProArray.push(PronunciationArray[i]);
delArrElement(PronunciationArray,PronunciationArray[i]);
JapArray.push(JapaneseArray[i]);
delArrElement(JapaneseArray,JapaneseArray[i]);
ChiArray.push(ChineseArray[i]);
var chi = delArrElement(ChineseArray,ChineseArray[i]);
}
/* 删除数组中的一个元素,返回删除后的数组 */
function delArrElement(arr,element)
{
var j=0;
for(i=0;i<arr.length;i++)
{
if(arr[i]==element)
{
break;
}
j++;
}
arr.splice(j,1);
return arr;
}
/* 重置按钮*/
function resetButton(){
for(var i=1;i<=3;i++){
document.getElementById('button'+i).disabled = false;
}
}

</script>
</body>
</html>

><script>
var PronunciationArray=new Array();
var JapaneseArray=new Array();
var ChineseArray=new Array();
PronunciationArray[0]="あう ";
JapaneseArray[0]="合う、会う、遭う ";
ChineseArray[0]="见面,合适,遭遇 ";
PronunciationArray[1]="あじわう ";
JapaneseArray[1]="味わう ";
ChineseArray[1]="品尝,鉴赏 ";
var nextWord;
function randomPronunciation(){
nextWord = Math.floor(Math.random()*PronunciationArray.length);
document.getElementById('Pronunciation').value = PronunciationArray[nextWord];
document.getElementById('Japanese').value = "";
document.getElementById('Chinese').value = "";
}
function randomJapanese(){
nextWord = Math.floor(Math.random()*JapaneseArray.length);
document.getElementById('Japanese').value = JapaneseArray[nextWord];
document.getElementById('Pronunciation').value = "";
document.getElementById('Chinese').value = "";
}
function randomChinese(){
nextWord = Math.floor(Math.random()*ChineseArray.length);
document.getElementById('Chinese').value = ChineseArray[nextWord];
document.getElementById('Pronunciation').value = "";
document.getElementById('Japanese').value = "";
}
function showPronunciation() {
document.getElementById('Pronunciation').value = PronunciationArray[nextWord];
}
function showJapanese() {
document.getElementById('Japanese').value = JapaneseArray[nextWord];
}
function showChinese() {
document.getElementById('Chinese').value = ChineseArray[nextWord];
}
只有这个代码的话 无法实现你所说的功能 这个页面起码要调用个数据库 才可以实现你所说的内容


python敲代码敲错了怎么修改
打开PYTHON自带的IDE,也就是SHELL。如果我们输入错误信息会提示红色。这个时候把光标移动到错误的那一行代码上,点击ENTER。然后就会自动生成新的一行代码出来。我们在这个的基础上修改即可,然后点击ENTER即可输出正确的结果。Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫...

网站怎么更改源代码
1、修改网站代码文件,若不支持在线修改,可下载代码文件进行修改,修改后上传覆盖即可。网站首页的HTML代码,是打开网站的第一个页面里面包含的代码。一般来说,这个文件会以index,index,index.asp,index.php等命名。2、新建一个“文本文档”,将其后缀改为“.html”回车后该文本文档即以webpage的形式...

c语言输出两位小数,要怎样修改代码呢?
打开dev c++,创建一个源代码窗口 2. 输入一段代码。这段代码的意思是,输入一个类型为浮点数的数值。输出一个浮点数 3. 运行,结果如下。此时结果不止两位小数。4. 于是需要对printf的代码进行修改,如下图 5. 然后在调试运行,即可只保留两位小数。

怎么修改网页源代码,如何保存?
1.首先如果是想要保存已经编辑好的代码程序的话,点击左上角的文件按钮打开文件选项卡。2.点击打开文件选项卡之后,我们在出现的选项中选择SaveAs这个另存为选项,可以打开保存文件的界面。3.点击另存为之后,在出现的界面中设置好文件保存的名称,然后选择自己想要保存代码的目录,点击确定按钮就可以进行复...

请问红警2尤里的复仇 辐射工兵怎么修改代码 让他可以部署攻击地面上所有...
用xcc提取rules.ini 随后用记事本打开rules.ini 搜索到[RadEruptionWarhead][RadEruptionWarhead]Verses=100%,100%,100%,100%,100%,100%,2000%,2000%,2000%,100%,100 将versers=后面的456项改成2000%即可

怎么查看网页源代码,从而进行修改
1、打开所要修改的网页,然后按下键盘上的“F12”,会出现一个源代码页面:2、然后点击左上角的小箭头,使其高亮:3、然后鼠标选择需要修改的内容,下面会出现相对应的代码,如下:4、然后在代码中鼠标右键,选择第一个的“Edix text”:5、此时将原来的“举报”改成“你好”,可以看到上面的内容...

手机怎么修改网页源代码
手机edge如何修改代码页手机edge如何修改代码页1、edge浏览器手机版设置,它的步骤与方法如下:第一步,首先打开edge浏览器,打开后点击底部的【更多】第二步,点击更多按钮后,再点击上方的【设置】按钮。第三步,进入设置页面后,再点击列表中的【主页】。2、双击打开asktoclosealltabs,将数值数据修改为...

如何修改html代码,让时钟如图二所示?
简单说明一下:给ul添加了一个flex布局,并设置内容为行排列并且不进行拆分,然后内容居中对齐;设置li的margin-top值,该值主要参考背景图片的高度(你这里是278px),然后再减去li本身的数字+英文内容的高度(span+p=121px),最后再除以2。设置li中的.seperator的样式,也就是冒号的样式,这里调整了...

如何修改这句源码?
DRAWTEXT(分钟值2, L*0.95, '6');COLORRED;DRAWICON(CROSS(MA(C,30), MA(C,13)), MA(C,20), 45);在修改后的代码中,我对该句进行了格式化和简化,以便更容易阅读和理解。我还将每个操作数与其前后的运算符分开,以确保程序可以正确解析每个操作数。另外,我还将另外两个语句放在了该句...

怎样修改代码,让文本框中的值显示为请输入用户名?
用户名: document.getElementById("uname").value= "请输入用户名"; 其实可以不用js代码: 用户名:

兴宁市17244843833: 怎么修改这个代码让他变成每个单词只出现一次 -
包明亮菌: 功能已实现.在ie6,火狐下调试没bug.出现过的单词以后将不会再出现.(如果一开始是点击随机给出日语发音,再点击随机给出日语单词,将会使生词列表重置.我觉得这样会更符合使用习惯).下面是代码.有注释.copy使用即可.同时我修改了些...

兴宁市17244843833: 在编写程序的时候已经写好的一个单词现在想把它全部变成大写怎么办不想在重新的打代码
包明亮菌: 找一个文本编辑器,比如记事本,或者高级点的ultraeditor,notepad++之类的,查找替换你想改的单词就行了 用啥快捷键取决于你用的什么编辑器和你的编辑器的快捷键的设定. 不管什么编辑器,都会有查找替换的功能,非常的简单,一点都不复杂.

兴宁市17244843833: 写代码时一个单词写错,后面都错,怎么样可以把写错的单词以及后面写错的单词统一修改? -
包明亮菌: 那要看你用的是编辑器了.一般的文本编辑器都提供替换功能,快捷键一般是Ctrl+H.如果是VS的话,assist会提供“rename”功能,可以方便的更改.

兴宁市17244843833: 帮忙修改一下代码 -- C语言实现统计一句话中不同单词的个数~我只写出了单词个数,不知道下一步怎么做了~~ -
包明亮菌: #include<stdio.h> #include<string.h> int main() { char str[100],word[100][20]; char temp[20]; int num = 1; int length; int i,j=0; gets(str); length = strlen(str); for(i = 0; i < length; i++) { if(str[i] == ' ') { word[num-1][j]=0; num++; j=0; } else word[num-1][j]=str[i]; ...

兴宁市17244843833: c语言里,怎样把一个文件中的某些数据改成另外的数据?怎样把某个特定字符前面的一个单词换掉? -
包明亮菌: 对于小文件,把文件全部读入内存,然后用字符串替换函数修改;用字符串查找函数查找+,然后判断前面的英文单词,替换掉;对于大文件,分块读入内存,对于第二块以后的文件内容,要与前一块重复一个单词,防止丢词.

兴宁市17244843833: right变更一个字母或增删一个字母,让它变成另一个单词? -
包明亮菌: r换成s-sight r换成l-light r换成f-fight r换成m-might r换成e-eight r换成t-tight 加字母b-bright 加字母f-fright

兴宁市17244843833: 给单词there修改一个字母,使之变成另外一个单词 -
包明亮菌: where

兴宁市17244843833: 这样获得下面option之间id=1的值,也就是会弹出A O P B,而不是整个单词,怎样修改代码??急急急!!! -
包明亮菌: <option><div id ="1">A<div/>pple</option>改成<option value="Apple">Apple</option>getIndex改成function getIndex() { var x=document.getElementById("mySelect").value; alert(x) }不明白你这里为什么option中用div,而且div的id都是1,id最好是唯一的.

兴宁市17244843833: 改一个字母使其变为另一个单词
包明亮菌: put-but(但是) day-dad (爸爸) house-mouse(鼠) side-ride(骑) pig-peg(销钉;螺钉;挂物钉) all-ill([常作表语]有病的;不健康的)

兴宁市17244843833: "snowy"怎样去掉,增加或变换一个字母把它变成另外一个单词 -
包明亮菌: snowy 形容词1. 雪的;下雪的;多雪的 He came to see me one snowy night. 他在一个下着雪的夜晚来看我. 2. 覆盖着雪的;积雪的3. 似雪的;雪白的;洁白无瑕的4. (电视、雷达屏幕)有"雪花"干扰的 ______________________________...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网