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

Python017

用C语言编写一个简单翻译程序,第1张

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

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

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

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

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

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

(1)void add_data()

{

structstudent st//创建结构体变量st

int b

int k,i

while(1)

{

printf("\n请输入学生信息:")

printf("\n编号\t姓名\t邮政编码\t电话号码")

printf("\n---------------------------------------------------------------\n")

scanf("%s%s%s%s",st.no,st.name,st.postcode,st.phonenumber)//将名字,电话号等组包放在st.no下

for(i=0i<dd.counti++)//for循环每个学号的学生

if(strcmp(dd.stu[i].no,st.no)==0) //如果学生学号和no的相同证明找到了

break//中断

if(i<dd.count)//如果查找的学生数不在总数中

printf("您输入的学号已存在,请重新输入")

else//这个else是将学号姓名电话等存入stu数组中,并且计数

{

k =dd.count

strcpy(dd.stu[k].no,st.no)

strcpy(dd.stu[k].name,st.name)

strcpy(dd.stu[k].postcode,st.postcode)

strcpy(dd.stu[k].phonenumber,st.phonenumber)

dd.count++

}

printf("\n\n继续添加学生信息[1-yes 0-no]:")

scanf("%d",&b)

if(b==0) break

}

save_data()

}

//此段程序为输入程序,主程序为数组和while循环的结合体,并且实现的无重复编号的输入,从而实现的信息的准确性。

(2)void delete_data()

{

int i,k

charno[10]

printf("\n请输入要删除学生的编号:")

scanf("%s",no)

k=-1

for(i=0i<dd.counti++)//循环整个学生数

{

if(strcmp(dd.stu[i].no,no)==0)//如果找到该学号了

{

k=i//将学号给k变量

break

}

}

if(k==-1)//没有找到

{

printf("\n\n没有找到该学生(编号-%s)!",no)

}

else//根本就没有

{

for(i=ki<dd.count-1i++)//接着k学号之后的学生找

{

strcpy(dd.stu[i].no,dd.stu[i+1].no)

strcpy(dd.stu[i].name,dd.stu[i+1].name)

strcpy(dd.stu[i].postcode,dd.stu[i+1].postcode)

strcpy(dd.stu[i].phonenumber,dd.stu[i+1].phonenumber)

}

dd.count--

save_data()

printf("\n\n删除(编号-%s)成功!",no)

}

}

写了一个简单的翻译器,只提供单词翻译,中文英文,英文到中文都行,你需要首先进行字典录入。录入以后会自动在目录下生成一个dic.txt文件。

#include

"stdio.h"

#include

"stdlib.h"

#include

"string.h"

#define

filename

"dic.txt"

struct

word

//字典结构体

{

char

chinese[20]

//中文

char

english[20]

//英文

}

/////////////////////////////////////////////////////////////

file

*fp

//全局文件指针

file

*

fileopen(char

filename[])

//文件打开函数

{

file

*fp

if((fp=fopen(filename,"r"))==null)

{

fp=fopen(filename,"w")

cout<<"文件打开失败重新创建记录文件"

return

fp

}

fp=fopen(filename,"a+")

return

fp

}

void

fileclose(file

*fp)

//文件关闭函数

{

if(fclose(fp)==0)

cout<<"安全关闭"<<endl

else

cout<<"文件关闭失败"<<endl

}

////////////////////////////////////////////////////////////////

void

tra1()

//中文翻译成英文模块

{

file

*fp

if((fp=fopen(filename,"r"))==null)

{

printf("文件打开失败!")

}

char

tempchinese[20]

word

temp

printf("请输入中文单词:")

scanf("%s",tempchinese)

while(fread(&temp,sizeof(word),1,fp)==1)

{

if(strcmp(temp.chinese,tempchinese)==0)

{

printf("中文:%s

英文:%s

\n",temp.chinese,temp.english)

}

}

printf("查找完毕!")

fileclose(fp)

}

//////////////////////////////////////////////

void

tra2()

//英文翻译成中文模块

{

file

*fp

if((fp=fopen(filename,"r"))==null)

{

printf("文件打开失败!")

}

char

tempenglish[20]

word

temp

printf("请输入英文单词:")

scanf("%s",tempenglish)

while(fread(&temp,sizeof(word),1,fp)==1)

{

if(strcmp(temp.english,tempenglish)==0)

{

printf("中文:%s

英文:%s

\n",temp.chinese,temp.english)

}

}

printf("查找完毕!")

fileclose(fp)

}

////////////////////////////////////////////////

void

inp()

//字典录入模块

{

fp=fileopen(filename)

word

temp

printf("请输入英文:")

scanf("%s",temp.english)

printf("请输入对应中文:")

scanf("%s",temp.chinese)

fwrite(&temp,sizeof(temp),1,fp)

printf("信息添加完成")

fileclose(fp)

}

////////////////////////////////////////////////

int

menu()

//主目录模块

{

int

choose

while(choose!=0)

{

printf("\n")

printf("简易中英翻译系统\n")

printf("1、中->英翻译\n")

printf("2、英-中翻译\n")

printf("3、字典录入\n")

printf("输入0退出系统\n")

printf("请输入:")

scanf("%d",&choose)

switch(choose)

{

case

0:return

0break

case

1:tra1()break

case

2:tra2()break

case

3:inp()break

}

}

}

///////////////////////////////////////////////////////

void

main()

{

menu()

}