当前位置:首页 » 编程语言 » c语言关键字中英翻译机总体设计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言关键字中英翻译机总体设计

发布时间: 2023-02-10 05:33:32

c语言程序设计----电子英汉词典设计

要做GUI的,还是命令行的?
要做什么样功能,什么显示的词典?
你所提供的信息不够全面,我无法为你解答。

⑵ 大虾看看我的代码 老出错 求正解 给高分 急急急急急急急急:问题是C语言关键字中英翻译机

可以了。
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>

int EN();
int CN();
void main()
{
char a[]="1";
char b[]="2";
char d[]="bye";

char ch;

printf("**************************************\n");
printf(" 欢迎使用C语言关键字中英翻译机\n");
printf("**************************************\n");

printf("1.通过输入英文来查找\n");
printf("2.通过输入中文意思来查找\n");
printf(" 输入b退出程序\n\n\n\n");
do{

ch=getch();
switch(ch)
{
case '1':EN();break;
case '2':CN();break;
case 'b':exit(0);break; //单引号中内容不可为字符串
default: ;

}
}while(1);

}
int EN()
{

char r[20] ;
int s; int n=34;
struct word//词库
{
char key[20];
char mean[80];
}word[1000]={{"auto","声明自动变量"},
{"double","声明双精度变量或函数"},
{"int","基本整形"},
{"struct","声明结构体变量或函数"},
{"break","跳出当前循环"},
{"else","条件语句否定分支(与if 连用)"},};

printf("\n请输入要查找的关键字的英文:\n");
scanf("%s",r);
for(s=0;s<=n;s++){
if(s<=n-1)
if(strcmp(word[s].key,r)==0)
break;
else
continue;
else
if(strcmp(word[n].key,r)==0)
break;
else
{
printf("\n抱歉,词库中没有收入此关键字");
}
}
printf("\n关键字:%s", word[s].key);
printf("\n关键字含义:%s\n", word[s].mean);

return 0;

}
int CN(){
char r[20] ;
int s;
int n=34;
struct word//词库
{
char key[20];
char mean[80];
}word[1000]={{"auto","声明自动变量"},
{"double","声明双精度变量或函数"},
{"int","基本整形"},
{"struct","声明结构体变量或函数"},
{"break","跳出当前循环"},}; //多了一个分号

printf("\n请输入要查找的关键字的中文:\n");
scanf("%s",r);
for(s=0;s<=n;s++)
{
if(s<=n-1)
if(strcmp(word[s].mean,r)==0)
break;
else
continue;
else
if(strcmp(word[n].mean,r)==0)
break;

else
{
printf("\n抱歉,词库中没有收入此关键字");
}
}
printf("\n关键字:%s", word[s].mean);
printf("\n关键字含义:%s", word[s].key);

return 0;
}

⑶ C语言关键字中英翻译机。

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

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

⑷ c语言关键字中英文翻译机的程序源代码

C语言中有大概30多个关键字:
auto 局部变量(自动储存)
break无条件退出程序最内层循环
case switch语句中选择项
char单字节整型数据
const定义不可更改的常量值
continue中断本次循环,并转向下一次循环
default switch语句中的默认选择项
do 用于构成do.....while循环语句
double定义双精度浮点型数据
else构成if.....else选择程序结构
enum枚举
extern在其它程序模块中说明了全局变量
float定义单精度浮点型数据
for构成for循环语句
goto构成goto转移结构
if构成if....else选择结构
int基本整型数据
long长整型数据
registerCPU内部寄存的变量
return用于返回函数的返回值
short短整型数据
signed有符号数
sizoef计算表达式或数据类型的占用字节数
static定义静态变量
struct定义结构类型数据
switch构成switch选择结构
typedef重新定义数据类型
union联合类型数据
unsigned定义无符号数据
void定义无类型数据
volatile该变量在程序中执行中可被隐含地改变
while用于构成do...while或while循环结构

⑸ 用C语言编写一个简单翻译程序

LZ 的那种方法 可以实现 ,但很显然是不实用,因为那样记录的也太多了吧,,,

我觉得,你可以记录下常用的特殊短语 像: hello China就可以了,因为很大一部分就是按照顺序翻译的,“有道”也经常出现这种问题的,以下是自己在用参考“有道”的时候的实现的一些想法,可以作为参考:

如果想智能点的话,你就得“教会”这个 【 英语和汉语 】这两门课 教的方法,就是把你会的东西全都教给他,比如说:

首先,你可以为每个单词定义一个struct数据结构,里面包含的是这个单词的 1. 【字义】(一个单词总不止一个意思吧)2.【词性】(你学习语法的时候要用到吧)3.【其他】(词组了什么的,有发音功能的话还得记录音标吧、、呵呵)

然后,要教它语法吧、、、这其实是最难的,语法就相当于你的算法了,程序的灵魂所在;

这也许就是C一直吸引着我们的地方,将抽象变为具体,呵呵、、祝你学习愉快、、、

⑹ void是什么意思,c语言是什么

void 被翻译为"无类型",相应的void *为"无类型指针"。常用在程序编写中对定义函数的参数类型、返回值、函数中指针类型进行声明。

void 的作用

1.对函数返回的限定,这种情况我们比较常见。

2.对函数参数的限定,这种情况也是比较常见的。

一般我们常见的就是这两种情况:

(1)当函数不需要返回值值时,必须使用void限定,这就是我们所说的第一种情况。例如:void func(int a,char *b)。

(2)0当函数不允许接受参数时,必须使用void限定,这就是我们所说的第二种情况。例如:int func(void)。

(6)c语言关键字中英翻译机总体设计扩展阅读:

2011年10月12日,C语言之父丹尼斯·里奇辞世,在众多的国际互动论坛上,计算机爱好者们以特有的方式纪念这位编程语言的重要奠基人。许多网友的发帖中没有片言只字,仅仅留下一个分号“;”。

在日益纷繁复杂的程序设计语言王国中,C语言因其简洁、有效、通用的特性而始终占据一席之地。被誉为“C语言之父”,同时也是操作系统Unix之父的C语言发明人之一——丹尼斯·里奇10月9日以70岁之龄辞世。

尽管通过Unix拿奖拿到手软,但令里奇引起最大关注和反响的则是C语言的问世。1999年,里奇和汤普逊为发展C语言和Unix操作系统一起获得了美国国家技术奖章。

网络-Void

网络-C语言关键字

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

#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");
}
}

⑻ c语言关键字中英翻译机,要求创建文件搜索

程序使用结构链表实现。

由于我写的函数已经自动识别中英文输入,中英文翻译功能其实可以合并成一个选项(3,4选项),但你题目既然要求2项目,所以没合并。

根据题目,创建字典是覆盖性,既每次创建输入,都会覆盖掉原文件,但考虑后期扩展,我的函数writeFile可以不覆盖,在原文件后新增,具体看备注。

菜单显示是利用递归函数,如果你想新增功能,参照我选项改。

(另外所有函数异常,我都是采取抛出,没有处理,你想处理根据我的函数返回值写处理吧!)

#include<stdio.h>

#include<string.h>

#include<malloc.h>

#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);

}

⑼ C语言编程题,设计英汉词典的课设题型

#include<stdio.h>

#include<string.h>

#include<malloc.h>

#include<math.h>

#define min(A,B) (A<B?A:B)

#define max(A,B) (A<B?B:A)

typedef struct Dict

{

char en[30];

char zh[30];

struct Dict* next;

} Dict;

int main(void)

{

Dict* head = 0;


int stucount=0;//数量


while(1)

{

printf("输入操作号:1:词汇输入 2:浏览 3:汉英 4:英汉 5:删除 6:退出:");


int quest;

scanf("%d",&quest);

scanf("%*[^ ]");

if(quest==6)break;

else if(quest==1)

{

Dict* newDict = (Dict*)malloc(sizeof(Dict));

printf("请输入中文:");

scanf("%29s", newDict->zh);

scanf("%*[^ ]");

printf("请输入英文:");

scanf("%29s", newDict->en);

scanf("%*[^ ]");

//插入链表首,这样最新添加的显示在最上面,容易看见效果

newDict->next=head;

head=newDict;


++stucount;

}

else if(quest==2)

{

if(head==0)

printf("没有单词! ");

else

{

printf("开始浏览单词: ");

while(1)

int st=0,en=min(st+10,stucount);

{

printf("浏览:%d个到%d个单词 ",st+1,en);

Dict* stu = head;

for(int i=0; i<st; ++i)

{

stu=stu->next;

}

for(int i=st; i<en; ++i)

{

printf("中文:%s 英文:%s ",stu->en,stu->zh);

stu=stu->next;

}

printf("输入操作号:1 向后翻页;2 向前翻页;-1 退出:");

int squest;

scanf("%d",&squest);

scanf("%*[^ ]");

if(squest==1)

{

if(en!=stucount) st=en;

}

else if(squest==2)

{

st=max(0,st-10);

}

else if(squest==-1)break;

en=min(st+10,stucount);

}

}

}

else if(quest==3 || quest==4 || quest==5)

{

char a[30];

if(quest==3)printf("请输入汉语词汇:");

else if(quest==4) printf("请输入英语词汇:");

else if(quest==5) printf("请输入待删除的词汇(汉英均可):");


scanf("%29s", a);

scanf("%*[^ ]");


Dict* stu = head;

Dict* lststu = 0;

int flag=0;

while(stu!=0 && flag==0)

{

if(quest==3)

{

if(strcmp(a,stu->zh)==0)

{

printf("英语为:%s ",stu->en);

flag=1;

}

}

else if(quest==4)

{

if(strcmp(a,stu->en)==0)

{

printf("汉语为:%s ",stu->zh);

flag=1;

}

}

else if(quest==5)

{

if(strcmp(a,stu->en)==0 || strcmp(a,stu->zh)==0)

{

stucount--;

if(lststu!=0)

lststu -> next = stu -> next;

else

head = stu -> next;

printf("已删除! ");

flag=1;

}

}


lststu=stu;

stu=stu->next;

}

if(flag==0)

{

printf("没有查到词汇! ");

}

}

}

return 0;

}

你看看对不对,能不能跑吧。如果有新的需求我可以继续写。代码应该很清晰了,如果你哪不懂可以给你解释。欢迎追问。