C语言关键字中英翻译机(只是翻译C语言中的关键字)。求高手帮忙......

作者&投稿:典怎 (若有异议请与网页底部的电邮联系)
C语言关键字中英翻译机。~

因为这是翻译机,所以你应该准备一个英汉汉英互译词库,然后用C对这个词库进行操作,最直接的方法就是穷搜,这是很简单的,但是词库大了就会很慢。。。所以词库可以做一些调整,比如按字母序排列,或者加一些字母索引,这样查找就会快些。。。

如果你能把词库给我我就能写出来,如果词库自己做的话,就只能译几个词,其它的词可以自己加入词库。。。

程序使用结构链表实现。
由于我写的函数已经自动识别中英文输入,中英文翻译功能其实可以合并成一个选项(3,4选项),但你题目既然要求2项目,所以没合并。
根据题目,创建字典是覆盖性,既每次创建输入,都会覆盖掉原文件,但考虑后期扩展,我的函数writeFile可以不覆盖,在原文件后新增,具体看备注。
菜单显示是利用递归函数,如果你想新增功能,参照我选项改。
(另外所有函数异常,我都是采取抛出,没有处理,你想处理根据我的函数返回值写处理吧!)



#include
#include
#include
#define FPATH "C:\\keyWord.txt"
typedef struct keyWord
{
char kwCN[20];// 中文名
char kwEN[10];// 英文名
struct keyWord *next;
}KW;
void freeKWS(KW *kwsHead);//释放链表内存
int createDictionary(char *path);//创建字典。成功返回1 失败返回0
int writeFile(char *path,KW *kwsHead,int flag);//写入文件。成功返回1,失败返回0。flag:0新增;1修改或删除
KW *readFile(char *path);//读取文件。成功返回头节点,失败返回NULL。
int isCN(char *strCN);//判断字符串是否是全中文,是返回1,否返回0
void showKWS(char *path,char*keyCN,char *keyEN);//参数全部传NULL打印整个链表。keyCN!=NULL打印对应英文,keyZN!=NULL打印对应中文
void showMenu(int n);//递归函数打印菜单,第一次调用传值-1
void selectByKey(char *keyN);//输入中文输出英文,输入英文输出中,自动识别中英文关键字
int main()
{
//createDictionary("C:\\keyWord.txt");
//showKWS(NULL,NULL);
showMenu(-1);

}
void showMenu(int n)//打印菜单
{
char cn[20],en[10];
switch(n)
{
case 1:
createDictionary(FPATH);
break;
case 2:
printf("当前中英文词典的内容:
");
showKWS(FPATH,NULL,NULL);
break;
case 3:
printf("请输入英文关键字:");
scanf("%s",en);
getchar();
selectByKey(en);
break;
case 4:
printf("请输入中文关键字:");
scanf("%s",cn);
getchar();
selectByKey(cn);
break;
case 5:
exit(0);
break;
case -1:
while(1)
{
system("cls");
printf("|***********************电子词典模拟软件***********************|
");
printf("1、创建关键字中英文词典
");
printf("2、显示关键字中英文词典
");
printf("3、输入英文关键字,查阅英汉词典
");
printf("4、输入中文关键字,查阅汉英词典
");
printf("5、退出
");
printf("|*********************All rights reserved**********************|
");
printf("请选择菜单中的1或2或3或4或5
");
scanf("%d",&n);
getchar();
showMenu(n);
}
break;
}
n=-1;
printf("----------按任意键返回上级菜单-----------
");
getchar();
}
void selectByKey(char *keyN)//输入中文输出英文,输入英文输出中,自动识别中英文关键字
{
if(isCN(keyN))
showKWS(FPATH,keyN,NULL);
else
showKWS(FPATH,NULL,keyN);
}
int isCN(char *strCN)//判断字符串是否包含中文,是返回1,否返回0
{
char *p=strCN;
while(*p!=0)
{
if((*p&0x80)==0x80)
return 1;
p++;
}
return 0;
}
void showKWS(char *path,char *keyCN,char *keyEN)//参数全部传NULL打印整个链表。keyCN!=NULL打印对应英文,keyZN!=NULL打印对应中文
{
KW *kwsHead=NULL;
kwsHead=readFile(path);
if(kwsHead)
while(kwsHead->next)
{
if(keyCN!=NULL && keyEN==NULL && strcmp(kwsHead->next->kwCN,keyCN)==0){
printf("对应英文关键字:%s
",kwsHead->next->kwEN);
break;
}
if(keyEN!=NULL && keyCN==NULL && strcmp(kwsHead->next->kwEN,keyEN)==0){
printf("对应中文关键字:%s
",kwsHead->next->kwCN);
break;
}
if(keyEN==NULL && keyCN==NULL)
printf("%s %s
",kwsHead->next->kwEN,kwsHead->next->kwCN);
kwsHead=kwsHead->next;
}
freeKWS(kwsHead);
}
int createDictionary(char *path)//创建字典。成功返回1 失败返回0
{
char cn[20],en[10];
KW *kwsHead=NULL,*kwTail=NULL,*kwNew=NULL;
kwsHead=(KW *)malloc(sizeof(KW));
if(!kwsHead)
return 0;
kwsHead->next=NULL;
printf("请输入关键字中文及英文(每行一组空格分割,输入NULL退出输入):
");
while(1)
{
cn[0]=en[0]=0;
scanf("%s",cn);
if(strcmp(cn,"NULL")==0)
break;
scanf("%s",en);
if(strcmp(en,"NULL")==0)
break;
kwNew=(KW *)malloc(sizeof(KW));
kwNew->kwCN[0]=kwNew->kwEN[0]=0;
kwNew->next=NULL;
strcpy(kwNew->kwCN,cn);
strcpy(kwNew->kwEN,en);
if(kwsHead->next)
kwTail->next=kwNew;
else
kwsHead->next=kwNew;
kwTail=kwNew;
}
getchar();
return writeFile(path,kwsHead,1);
}
KW *readFile(char *path)//读取文件。成功返回头节点,失败返回NULL。
{
FILE *fp=NULL;
char cn[20],en[10];
KW *kwsHead=NULL,*kwTail=NULL,*kwNew=NULL;
kwsHead=(KW *)malloc(sizeof(KW));
if(!kwsHead)
return NULL;
kwsHead->next=NULL;
fp=fopen(path,"r");
if(!fp)
{
printf("文件打开失败!
");
return NULL;
}
fseek(fp,0,SEEK_SET);
while(fscanf(fp,"%s%s",cn,en)!=-1)
{
kwNew=(KW *)malloc(sizeof(KW));
if(!kwNew)
return NULL;
kwNew->next=NULL;
strcpy(kwNew->kwCN,cn);
strcpy(kwNew->kwEN,en);
if(kwsHead->next)
kwTail->next=kwNew;
else
kwsHead->next=kwNew;
kwTail=kwNew;
}
fclose(fp);
return kwsHead;
}
int writeFile(char *path,KW *kwsHead,int flag)//写入文件。成功返回1,失败返回0。flag:0新增;1修改或删除
{
FILE *fp=NULL;
if(flag)
fp=fopen(path,"wt+");
else
fp=fopen(path,"rt+");
if(!fp)
{
printf("文件打开失败!
");
return 0;
}
fseek(fp,0,SEEK_END);
while(kwsHead->next)
{
fprintf(fp,"%s %s
",kwsHead->next->kwCN,kwsHead->next->kwEN);
kwsHead=kwsHead->next;
}

fclose(fp);
printf("数据写入文件成功!
");
freeKWS(kwsHead);
return 1;
}
void freeKWS(KW *kwsHead)//释放链表内存
{
KW *kwDel=NULL;
while(kwsHead->next)
{
kwDel=kwsHead->next;
kwsHead=kwsHead->next;
free(kwDel);
}
free(kwsHead);
}

#include<stdio.h>
#include<string.h>
char* bijiao(char* s1,char* s2[],char* s3[])
{
int i,j;
for(i=0;i<32;i++)
{
for(j=0;j<(int)strlen(s2[i]);j++)
{
if(s1[j]!=s2[i][j]) break;
}
if(j==(int)strlen(s2[i]))
return s3[i];
for(j=0;j<(int)strlen(s3[i]);j++)
{
if(s1[j]!=s3[i][j]) break;
}
if(j==(int)strlen(s3[i]))
return s2[i];
}
return "没有找到数据";
}
void main()
{
char str[50];
char* str1[32]={"auto","break","case","char","const","continue","default"
,"do","double","else","enum","extern","float","for","goto","if","int"
,"long","register","return","short","signed","static","sizeof","struct"
,"switch","typedef","union","unsigned","void","volatile","while"};
char* str2[32]={"自动变量","跳出当前循环","开关语句分支","字符型变量","只读变量","结束当前循环","其他分支"
,"循环语句的循环体","双精度变量","条件语句否定分支","枚举类型","声明变量是在其他文件正声明","浮点型变量","循环语句","跳转语句","条件语句","整型变量"
,"长整型变量","寄存器变量","返回语句","短整型变量","有符号类型变量","静态变量","计算数据类型长度","结构体变量"
,"开关语句","用以给数据类型取别名","共用数据类型","无符号类型变量","无返回值","说明变量在程序执行中可被隐含地改变","循环语句的循环条件"};
while(1)
{
gets(str);
if(str[0]=='b'&&str[1]=='y'&&str[2]=='e'&&str[3]=='\0')return ;
puts(bijiao(str,str1,str2));
printf("\n");
}
}

我自己做了一个程序,想要找我


微信中英互译怎么开
2、边写边译功能开启后输入英文,长按输入框就会弹出一个选项条,在里面新增了一个边写边择的功能。3、想要切换成不同语言的话,在输入框上点击“英文”进入到切换语言的界面中。4、选择自己想要翻译的语言即可。5、以后无论想要中文翻译成英文,或英文翻译成中文就都会自动在输入框上面显示出对应的...

求中英文翻译软件
中英文翻译软件推荐如下:1、有道词典是网易有道出品的一款很小很强大的翻译软件,通过独创的网络释义功能,轻松囊括互联网上的流行词汇与海量例句,支持中英日韩法多语种翻译,目前已经有超过8000万用户使用。2、谷歌翻译器功能比较单一,只能翻译,但依托与谷歌翻译,在翻译上面的表现还是比较优秀的,对于经常...

中英互译翻译
中英互译翻译,即指中文和英文两种语言进行互相翻译,使得两个国家的人可以进行正常的沟通和交流,从而去了解另一个国家的风土人情以及文化信仰等方面。常见的互译软件 1、中译英: deepL 专业翻译都会用的翻译工具,尤其很多专业性强的文章也能准确翻译,除中英互译外,小语种和英文的互译也做得很好。2、...

中英翻译 有道
免费的中英翻译软件叫有道词典。有道词典是由网易有道出品的全球首款基于搜索引擎技术的全能免费语言翻译软件。有道词典通过独创的网络释义功能,轻松囊括互联网上的流行词汇与海量例句,并完整收录《柯林斯高级英汉双解词典》、《21世纪大英汉词典》等多部权威词典数据。词库大而全,查词快且准。结合丰富的...

微信里怎么弄中英文翻译啊?
微信开启中英文翻译的参考如下:微信中英文翻译不需要额外开通,只需长按文字即可选择翻译。在【微信】主页面点击右下角【我】,然后点击【设置】选项。接着点击【通用】-【多语言】。选择要翻译的语言,点击【保存】,就可以设置翻译的语言了。需要四步:1、首先打开微信,选择一个需要翻译的聊天界面,...

中文翻译英文软件
如果需要翻译其他语言的话,直接在上面点击语言切换就行,除了英文、中文之外,还有日语、德语、法语、韩语、泰语、西班牙语等,一共有25种语言可选,基本上常用的都包括了。中英翻译偏差的原因 语言翻译对不同语言体系人群沟通和交流起着至关重要的纽带作用。良好的翻译对国际交流会起到积极的促进作用;而...

汉翻英在线
2.多种语言支持:汉翻英在线不仅支持中英文翻译,还支持多种其他语言的翻译,如法语、德语、日语等。3.免费使用:汉翻英在线是一款完全免费的翻译工具,用户无需支付任何费用即可使用。二、汉翻英在线的使用方法 1.打开汉翻英在线的官方网站(www.hanfanying.com)。2.在输入框中输入要翻译的中文或...

有道词库(全球最全面的中英文在线词典及翻译服务平台)
二、使用有道词库 1.中英文词典查询 有道词库的主要功能是中英文词典查询,用户可以在搜索框中输入要查询的单词或短语,然后点击“查询”按钮即可。查询结果会显示出该单词或短语的中文或英文解释,以及相关的例句和用法。2.多语言翻译 除了中英文词典查询外,有道词库还支持多语言翻译,用户可以将要翻译的...

急求,中译英翻译,谢谢!!!
二、从语言知识的传授者转换成语言技能的培养者和文化传播者 Second, from the language knowledge imparted convert language skills training person and culture disseminator 美国著名语言学家乔姆斯基认为:语言是受规则支配的体系。The famous American linguist Chomsky think: the language is dominated by...

不知道用英语怎么说(中英文翻译器)
不知道用英语怎么说我不知道的英语Idon'tknow。例句:1、我不知道他是否说了真话。I?don't?know?if?he's?telling?the?truth?or?not.2、我不知道该不该穿外套。I?wonder?if?I?should?wear?a?coat?or?not.重点词汇:know?知道?;?知悉?;?了解?;?认识到?;?懂得?;?意识到?;?确信?;?确知...

玉树藏族自治州17326045712: C语言关键字中英翻译机. -
玉选泰能: 因为这是翻译机,所以你应该准备一个英汉汉英互译词库,然后用C对这个词库进行操作,最直接的方法就是穷搜,这是很简单的,但是词库大了就会很慢...所以词库可以做一些调整,比如按字母序排列,或者加一些字母索引,这样查找就会快些... 如果你能把词库给我我就能写出来,如果词库自己做的话,就只能译几个词,其它的词可以自己加入词库...

玉树藏族自治州17326045712: 求程序设计 -- c语言关键字中英翻译机,有没有能够运行成功的源代码 -
玉选泰能: #include#include#include char *eng[]={"auto","break","case","char","const","continue", "default","do","double","else","enum","extern", "float","for","goto","if","int","long", "register","return","...

玉树藏族自治州17326045712: 如何用C语言来制作翻译器 -
玉选泰能: #include #include #define szSTR 32struct TWordPair { char A[szSTR]; char B[szSTR];} Dict[if", "如...

玉树藏族自治州17326045712: C 语言关键字的翻译及统计程序 -
玉选泰能: #include <stdio.h>#include <stdlib.h>#include <string.h>#define szSTR 32 struct TWordPair { char A[szSTR]; char B[szSTR]; } Dict[] = { {"auto", "声明自动变量 一般不使用"}, {"double", "声明双精度变量或函数"}, {"int", "声明...

玉树藏族自治州17326045712: c语言在线翻译器 -
玉选泰能: 这个是大数加法的程序了, 1 先进行分割, 2 然后将对应的字符数字保存为数字逆序放到数组里, 3 在做加法,进位的时候后面以为加,低位和减去10为低位, 4 逆序输出结果

玉树藏族自治州17326045712: 帮翻译C语言关键字,看详细
玉选泰能: c语言中一共有32个关键字 auto[自动]; break[跳出循环或switch]; case[选择条件switch中出现]; char[字符型]; const[限制变量不许被改变]; continue[结束本次循环]; default[switch中出现,case中不包含的条件全走这条路]; do[do while循环];...

玉树藏族自治州17326045712: 求编程,编一个简单的翻译器,5句英文翻译成中文就可以了.用c语言编. -
玉选泰能: LZ 的那种方法 可以实现 ,但很显然是不实用,因为那样记录的也太多了吧,,, 我觉得,你可以记录下常用的特殊短语 像: hello China就可以了,因为很大一部分就是按照顺序翻译的,“有道”也经常出现这种问题的,以下是自己在用参考...

玉树藏族自治州17326045712: 几个c语言关键字的翻译
玉选泰能: auto 自动. break 中断(循环语句,开关语句里用). case 情况(开关语句里用).char 字符. const 常量. continue 继续(循环语句里用).default 默认(开关语句里用).do 做循环. double 双精度. else 否则.enum 枚举型. extern 外部. float 单精度浮...

玉树藏族自治州17326045712: c语言怎么翻译 -
玉选泰能: C语言是Combined Language(组合语言)的中英混合简称.是一种计算机程序设计语言.

玉树藏族自治州17326045712: c语言翻译器 -
玉选泰能: 不知道你这样问的意思.不过看到分值挺诱人的,我也来说两句. C语言翻译器.翻译器是早前的叫法,现在大都叫编译器. 以前条件比较艰苦,开发的时候,程序的编辑工具、编译工具、链接工具、调试环境等等这些统称为“工具链”的东...

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