c语言程序的课程设计--关键字中英翻译机
课 程 设 计 报 告
学院、系:
吉林大学珠海学院计算机科学与技术系
专业名称:
计算机科学与技术
课程设计科目
C语言程序课程设计
所在班级:
学生学号:
学生姓名:
指导教师:
完成时间:
C语言关键字中英翻译机
一、设计任务与目标
(1)输入中文关键字可以翻译成英语,如输入“整型”则输出关键字“int”;
(2)输入英文关键字可以翻译成中文,如输入“int”则输出关键字“整型”;
(3)可多次查询;
(4)输入bye时退出。
二、方案设计与论证
(1)定义两个字符型数组分别存放中文关键字和英文关键字,中文和英文的顺序要一一对应,即数组的下标值要相同;
(2)定义一个字符型数组用来存放输入的字符串;
(3)利用strcmp()函数和循环结构实现输入的英文或中文关键字和已定义的字符型数组中的英文或中文关键字逐一比较;
(4)输入的关键字和已有的关键字比较相同则利用中英相对应的下标值相同输出对应的英文或中文;
(5)利用循环结构实现多次查询的功能;
(6)利用exit()函数实现输入“bye”时退出程序;
三、程序框图或流程图,程序清单与调用关系
开始
开始
输入x
输入x
x=0
x=0
x=1
输入a输入a
输入a
输入a
退出退出是是bye
退出
退出
是
是
bye ?
bye ?
否否
否
否
strcmp(a,En[i])strcmp(a,Ch[i])
strcmp(a,En[i])
strcmp(a,Ch[i])
相同相同
相同
相同
输出Ch[i]不相同输出En[i]不相同
输出Ch[i]
不相同
输出En[i]
不相同
i++i++
i++
i++
是是
是
是
是否否i<10?i<10?
是
否
否
i<10?
i<10?
否time<100?
否
time<100?
结束
结束
四、全部源程序清单
#include
#include
#include
void main()
{
int i,x,k,time;
char a[15];
char *En[]={"int","float","double","for","return","auto","if","while","continue","break"};
char *Ch[]={"整型","单精度","双精度","循环","返回","自动","如果","当","继续","退出"};
cout<
for(time=0;time<100;time++)
{
cin>>x;
if (x==1)
{
cout<
cin>>a;
if (strcmp(a,"bye")==0)
exit(0);
cout<
for (i=0;i<10;i++)
{
if (strcmp(a,Ch[i])==0)
{
cout<
}
}
cout<
}
if (x==0)
{
cout<
cin>>a;
if (strcmp(a,"exit")==0)
exit(0);
cout<
for (i=0;i<10;i++)
{
if (strcmp(a,En[i])==0)
{
cout<
}
}
cout<
}
}
}
五、程序运行结果测试与分析
(1)输入“1+回车”为中文翻译成英文,输入“0+回车”为英文翻译成中文;
(2)输入中文关键字翻译成英文关键字;
(3)输入英文关键字翻译成中文关键字;
(4)输入“1或0+回车”后输入“bye”则退出程序。
六、结论与心得
在做这个程序的时候首先遇到的问题就是如何实现中英互译,一开始感觉很难。后来通过仔细的思考和研究,就想到通过两个一维数组分别来保存中文和英文,并且通过使对应英文和中文数组下标保持一致,来实现通过输入的英文或中文跟数组已有的来比较,比较相同,则通过下标值来查找对应的中文或英文,然后输出即可。但是这个程序还是有不足的地方,因为保存的词比较少,所以只是通过一位数组来保存,而且是没有规律的,如果要像输入法那样保存大量的词汇,这样的方法使用起来很不方便。所以需要想一种更高效的方法来解决这个问题。比如通过二维数组来保存词汇,词汇按字母顺序之类的方法来保存,这