课程设计-C语言关键字中英翻译机_第1页
课程设计-C语言关键字中英翻译机_第2页
课程设计-C语言关键字中英翻译机_第3页
课程设计-C语言关键字中英翻译机_第4页
课程设计-C语言关键字中英翻译机_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计--C语言关键字中英翻译机学院、系:计算机科学与技术专业名称:C语言程序设计所在班级:学生学号:学生姓名:指导教师:完成时间:2012年3月-5月C语言关键字中英翻译机一、设计任务与目标1.输入中文关键字可以翻译成英语,如输入“整型”则输出关键字“int”;2.输入英文关键字可以翻译成中文,如输入“int”则输出关键字“整型”;3.可多次查询;4.输入bye时退出。二、方案设计与论证1.定义两个字符型数组分别存放中文关键字和英文关键字,中文和英文的顺序要一一对应,即数组的下标值要相同;2.定义一个字符型数组用来存放输入的字符串;3.利用strcmp()函数和循环结构实现输入的英文或中文关键字和已定义的字符型数组中的英文或中文关键字逐一比较;4.输入的关键字和已有的关键字比较相同则利用中英相对应的下标值相同输出对应的英文或中文;5.利用循环结构实现多次查询的功能;6.利用exit()函数实现输入“bye”时退出程序;三、程序框图或流程图,程序清单与调用关系四、全部源程序清单include<iostream.h>include<string.h>include<stdlib.h>voidmain(){inti,x,k,time;chara[15];char*En[]={"int","float","double","for","return","auto","if","while","continue","break"};char*Ch[]={"整型","单精度","双精度","循环","返回","自动","如果","当","继续","退出"};cout<<"中文翻译成英文输入1,英文翻译成中文输入0(要退出程序请在输入1、后输入bye):"<<endl;for(time=0;time<100;time++){cin>>x;if(x==1){cout<<"请输入要翻译的中文关键字:"<<endl;cin>>a;for(i=0;i<10;i++){if(strcmp(a,Ch[i])==0){cout<<En[i]<<endl;break;}}}else{cout<<"请输入要翻译的英文关键字:"<<endl;cin>>a;if(strcmp(a,"bye")==0){exit(0);}for(i=0;i<10;i++){if(strcmp(a,En[i])==0){cout<<Ch[i]<<endl;break;}}}}}致谢在此,我要衷心感谢许杰辉同学对我的帮助。设计任务与目标1.输入一个年份,输出该年的日历;2.输入年月,输出该月的日历;3.输入年月日,输出距今天还有多少天,星期几,是否是公历节日;4.输入某人自1990年1月1日开始的日期,输出他这一天是打鱼还是晒网。方案设计与论证1.定义两个全局数组,一个保存闰年和平年的天数,另一个保存闰年和平年每月的天数;2.判断是否是闰年的函数为leapyear。能被4整除但不能被100整除的年份是闰年,能被100整除且能被400整除的年份也是闰年;3.计算从公元1年1月1号开始计算到某年某月某日的总天数的函数为alldays;4.保存一年中公历节日的函数为festival;5.显示输出界面的格式的函数为outputtoscreen;6.通过输入年份,调用alldays函数和outputtoscreen函数来显示该年份的日历的函数为oneyear;7.通过输入年月,调用alldays函数和outputtoscreen函数来显示查询的某年某月的日历的函数为onemonth;8.通过输入现在的年月日和要查询的年月日,相减得出相差多少天,再通过调用alldays函数计算要查询的日期的总天数除以7取模来显示查询的日期是星期几的函数为howlong。由于会出现除以7整除的情况,所以要另外写一个输出语句,使得整除的时候输出为“星期日”。然后再调用festival函数得出是否是公历节日;9.通过输入某年某月某日,调用alldays函数来实现某年某月某日的总天数减去1990年1月1日的总天数,然后除以5取模来得出某年某月某日是在打鱼还是在晒网的函数为fishornet;10.显示出选项并输入要使用的功能选项序列号的函数为list;11.通过调用list函数返回一个序列所代表的数值,再通过数值调用所需的功能函数的函数为choose。程序清单与调用关系输入年份、月份和日期的函数为input;输出日历的函数为output;判断是否是闰年的函数为leapyear;计算从公元1年1月1号开始计算到某年某月某日的总天数的函数为alldays;保存一年中公历节日的函数为festival;显示输出界面的格式的函数为outputtoscreen;通过输入年份,调用alldays函数和outputtoscreen函数来显示该年份的日历的函数为oneyear;通过输入年月,调用alldays函数和outputtoscreen函数来显示查询的某年某月的日历的函数为onemonth;通过输入现在的年月日和要查询的年月日,相减得出相差多少天,再通过调用alldays函数计算要查询的日期的总天数除以7取模来显示查询的日期是星期几的函数为howlong;通过输入某年某月某日,调用alldays函数来实现某年某月某日的总天数减去1990年1月1日的总天数,然后除以5取模来得出某年某月某日是在打鱼还是在晒网的函数为fishornet;显示出选项并输入要使用的功能选项序列号的函数为list;通过调用list函数返回一个序列所代表的数值,再通过数值调用所需的功能函数的函数为choose。开始days=1,a=m,b=1while(a>1){//改为while循环days=days+dayofmonth[leapyear(y)][a-2];//修正dayofmonth数组的索引a=a-1;//改为递减}while(b<y){//改为while循环days=days+dayofyear[leapyear(b)];b=b+1;//改为递增}returndays;}intleapyear(intyear)//判断是否是闰年{if(year%4==0&&year%100!=0||year%400==0)//修正if条件return1;elsereturn0;}intmain(){intyear,month,day,time,i,l,one,two,result,date;cout<<"请输入年份:";cin>>year;cout<<"请输入月份:";cin>>month;cout<<"请输入日期:";cin>>day;time=alldays(year,month)+day-alldays(1990,1);//修正计算总天数的公式i=time%5;if(i>=1&&i<=3){//修正if条件one=alldays(1990,1);two=alldays(year,month)+day;if(one>two)result=one-two-1;elseresult=two-one-1;if(result<=0)cout<<"今天打鱼"<<endl;//修正输出elsecout<<"今天晒网"<<endl;//修正输出}else{l=alldays(year,month)+day-alldays(1990,1)%7;//修正计算星期的公式outputtoscreen(l%7);//改为调用outputtoscreen函数date=(alldays(year,month)-1)%7;//修正计算日期的公式if(date==0)cout<<"今天是星期日"<<endl;//修正输出elsecout<<"今天是星期"<<date<<endl;//修正输出festival(year,month,day);//修正函数名}return0;}return1;//表示闰年,否则表示平年。为了避免每年的第一天排在星期日的位置,我们需要在计算每月的天数时进行一些调整。具体来说,我们需要先计算出该年的第一天是星期几,然后根据这个信息来确定每个月的起始位置。for(a=m;a>1;a--){days+=dayofmonth[leapyear(y)][a-2];//根据上个月的剩余天数来确定下个月的起始位置,所以要减2}我们可以使用一个数组来存储所有的节日日期,然后在查询日期时判断该日期是否为节日。具体来说,我们可以将数组中对应的日期位置设为1,表示该日期为节日。intfes[12][31];fes[0][0]=fes[1][13]=fes[2][7]=fes[3][0]=fes[4][0]=fes[5][0]=1;fes[6][0]=fes[7][0]=fes[8][9]=fes[9][0]=fes[11][24]=1;if(fes[month-1][day-1]==1){return1;}else{return0;}在输出日期时,我们需要先确定该月的第一天是星期几,然后在输出日期之前先输出对应数量的空格。同时,我们还需要注意换行的问题。voidoutputtoscreen(intyear,intmonth,intl){intj,k;cout<<"\t"<<"\t"<<"\t"<<""<<year<<"年*"<<month<<"月**"<<endl;cout<<"\t"<<"日"<<"\t"<<"一"<<"\t"<<"二"<<"\t"<<"三"<<"\t"<<"四"<<"\t"<<"五"<<"\t"<<"六"<<endl;if(l==0){}else{for(j=0;j<l;j++){cout<<"\t";}for(k=1;k<=dayofmonth[leapyear(year)][month-1];k++){cout<<"\t"<<k;if((l+k)%7==0){cout<<endl;}}}cout<<endl<<endl;}在查询一年或一个月的日期时,我们需要先输入对应的年份和月份,然后根据输入的信息来调用对应的函数。voidoneyear(){intyear;cout<<"请输入年份:";cin>>year;for(inti=1;i<=12;i++){outputtoscreen(year,i,dayofweek(year,i,1));}}voidonemonth(){intyear,month;cout<<"请输入年份和月份:";cin>>year>>month;outputtoscreen(year,month,dayofweek(year,month,1));}voidfishornet(){intyear,month,day,time,i;system("cls");cout<<"某人自1990年1月1日开始,三天打鱼两天晒网,"<<endl;cout<<"如果你想知道某年某月某日是在打鱼还是晒网。"<<endl<<endl;cout<<"请输入要查询的具体年月日:";cin>>year>>month>>day;time=(alldays(year,month)+day)-((alldays(1990,1)+1));i=time%5;if(i>=0&&i<=2)cout<<endl<<endl<<"查询结果:"<<year<<"年"<<month<<"月"<<day<<"日正在打鱼"<<endl<<endl;elsecout<<endl<<endl<<"查询结果:"<<year<<"年"<<month<<"月"<<day<<"日正在晒网"<<endl<<endl;getchar();}intlist(){intchoice;system("cls");cout<<"应用功能:"<<endl;cout<<"1:输入一个年份,输出是在屏幕上显示该年的日历。"<<endl<<endl;cout<<"2:输入年月,输出该月的日历。"<<endl<<endl;cout<<"3:输入年月日,输出距今天还有多少天,星期几,是否是公历节日。"<<endl<<endl;cout<<"4:某人自1990年1月1日开始,三天打鱼两天晒网,输入一个1990年以后的日期,输出他这一天是打鱼还是晒网。"<<endl<<endl;cout<<"0:退出"<<endl<<endl<<endl<<endl<<endl<<"请选择所需要功能所代表的选项:";cin>>c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论