我觉得,你可以记录下常用的特殊短语 像: 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()
}