中南大学数学院C++课程设计报告.docx
- 文档编号:7112023
- 上传时间:2023-01-18
- 格式:DOCX
- 页数:21
- 大小:23.06KB
中南大学数学院C++课程设计报告.docx
《中南大学数学院C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《中南大学数学院C++课程设计报告.docx(21页珍藏版)》请在冰豆网上搜索。
中南大学数学院中南大学数学院C+课程设计报告课程设计报告中南大学C+课程设计设计报告题目C+课程设计学生姓名学号专业班级数学类0901指导老师袁修贵数学科学与计算技术学院2010年6月一、实验目的、内容1.用户任意输入一个年份以及该年的1月1日是星期几,而后再输入该年的任意一个月份,由程序负责在屏幕上按照你所设计的格式显示出这一个月的月历。
?
思考:
利用元年元月元日(即1年1月1日)是星期一的已知事实,可对程序进行改造,让用户仅输入任意一个年份和一个月份,则程序就应按格式显示出该年那一个月的月历。
2.编写程序,从键盘读入一个文本文件名字(可带路径),为该文件中的所有单词建立一个词汇索引。
按字母顺序显示所有单词(仅一次),后面紧跟着它们所在的行号。
大写与小写字母被认为是相同的。
例如,对于下列的输入文件:
Tobeornottobe,thatisthequestion.产生的词汇索引如下:
be12is3not2or1question3that3the3to123.模拟计算器程序问题描述设计一个程序来模拟一个简单的手持计算器。
程序支持算术运算+、-、*、/、=、以及(清除)、A(全清除)操作。
基本要求程序运行时,显示一个窗口,等待用户输入,用户可以从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入=符号后,窗口显示出结果。
测试数据程序输入不少于5种不同的表达式进行测试。
实现提示可定义一个计算器类,该类包括两个组件对象,一个计算引擎和一个用户接口,用户接口对象处理接受的键盘输入信息,并显示答案,计算引擎对象对给出的数据执行相应操作,并存储操作的结果。
二、实验程序设计及结构1、需求分析对需求的信息进行模糊查询模拟电子辞典模拟计算器2、设计结构
(1)#include#includeinta13=0,31,28,31,30,31,30,31,31,30,31,30,31;intmain()inti,n,s=0,r=0,year,month,days=0,day,date=1;intb42=1,2,3,4,5,6,7;/日历中的星期puts(Pleaseinputtheweekdayofdatemonth1/day1:
);scanf(%d,&n);puts(Pleaseinputthedateyouwant:
);scanf(%d%d%d,&year,&month,&day);if(year%4=0&year%100!
=0)|year%400=0)a2=29;for(i=1;i=7)s=(s+n-1)%7;elses=s+n-1;printf(weekday:
);switch(s)case0:
puts(7n);break;case1:
puts(1n);break;case2:
puts(2n);break;case3:
puts(3n);break;case4:
puts(4n);break;case5:
puts(5n);break;case6:
puts(6n);break;if(days+n)=7)r=(days+n)%7;elser=days+n;for(i=0;i42;i+)if(i=r+6&date5&(i+1)%7=0)printf(n);return0;
(2)#include#include#include#includeusingnamespacestd;typedefstruct_unitstringword;intline;unit;intmain()vectorlist;ifstreamin;stringfileName;coutfileName;in.open(fileName.c_str();if(in.fail()cout文件打开错误,退出temp.word;temp.line=lineNumber;list.push_back(temp);if(in.peek()=n)lineNumber+;in.close();boolisIn=false;vectorcopy;for(unsignedinti=0;ilist.size();i+)isIn=false;for(unsignedintj=0;jcopy.size();j+)if(listi.word=copyj)isIn=true;break;if(!
isIn)copy.push_back(listi.word);vectorlineNo;for(unsignedintm=0;mcopy.size();m+)for(unsignedintn=0;nlist.size();n+)if(listn.word=copym)lineNo.push_back(listn.line);lineNo.push_back(0);intcurrent=0;for(unsignedinto=0;ocopy.size();o+)coutcopyo;for(unsignedintp=current;plineNo.size();p+)if(lineNop=0)current=p+1;break;elsecoutlineNop;coutendl;return0;(3)#include#include#include#include#include#include#includeusingnamespacestd;istream*input;/pointertoinputstreamintno_of_errors;/note:
defaultinitializedto0doubleerror(constchar*s)no_of_errors+;cerrerror:
sget(ch)returncurr_tok=END;while(ch!
=n&isspace(ch);switch(ch)case;:
casen:
returncurr_tok=PRINT;case*:
case/:
case+:
case-:
case(:
case):
case=:
returncurr_tok=Token_value(ch);case0:
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
case.:
input-putback(ch);*inputnumber_value;returncurr_tok=NUMBER;default:
/NAME,NAME=,orerrorif(isalpha(ch)string_value=ch;while(input-get(ch)&isalnum(ch)string_value+=ch;/string_value.push_back(ch);/toworkaroundlibrarybuginput-putback(ch);returncurr_tok=NAME;error(badtoken);returncurr_tok=PRINT;maptable;doubleexpr(bool);/cannotdowithoutdoubleprim(boolget)/handleprimariesif(get)get_token();switch(curr_tok)caseNUMBER:
/floating-pointconstantdoublev=number_value;get_token();returnv;caseNAME:
double&v=tablestring_value;if(get_token()=ASSIGN)v=expr(true);returnv;caseMINUS:
/unaryminusreturn-prim(true);caseLP:
doublee=expr(true);if(curr_tok!
=RP)returnerror()expected);get_token();/eat)returne;default:
returnerror(primaryexpected);doubleterm(boolget)/multiplyanddividedoubleleft=prim(get);for(;)switch(curr_tok)caseMUL:
left*=prim(true);break;caseDIV:
if(doubled=prim(true)left/=d;break;returnerror(divideby0);default:
returnleft;doubleexpr(boolget)/addandsubtractdoubleleft=term(get);for(;)/foreverswitch(curr_tok)casePLUS:
left+=term(true);break;caseMINUS:
left-=term(true);break;default:
returnleft;intmain(intargc,char*argv)switch(argc)case1:
/readfromstandardinputinput=&cin;break;case2:
/readargumentstring/input=newistringstream(argv1);input=newistrstream(argv1);break;default:
error(toomanyarguments);return1;while(*input)get_token();if(curr_tok=END)break;if(curr_tok=PRINT)continue;coutexpr(false)n;if(input!
=&cin)deleteinput;returnno_of_errors;d三、设计过程写出设计过程,实验源代码可不写出,但实验中出错信息及处理方法及解决错误的方法要写。
四、设计的特点和结果经过一个学期的学习和上机实践,使我对C+语言有了更认识和和了解,要想学好它要重在实践,要通过不断的上机操作才能更好的学习它,通过实践,我也发现我的好多不足之处,对各种控制结构及语句、数组的基本与高级应用、指针数组、字符数组、动态数组、函数的定义、调用方式;函数在编程中的具体应用;以及变量存储特征与标识符的作用域,通过实践,使我在这些方面有了认识和提高。
课程设计它是一项任务,更是一种挑战和历练。
在应用visualc+2005的课程设计中,尝试了对不同问题的分析与理解,模拟了计算器、日历的模糊索引、电子辞典的程序。
通过实际的演练,增强了对知识的理解和运用能力。
参考文献1、IvorHorton,visualc+2005入门经典,清华大学出版社,20072、张岳新,visualc+程序设计,苏州大学出版社,2005附录1#include#includeinta13=0,31,28,31,30,31,30,31,31,30,31,30,31;intmain()inti,n,s=0,r=0,year,month,days=0,day,date=1;intb42=1,2,3,4,5,6,7;/日历中的星期puts(Pleaseinputtheweekdayofdatemonth1/day1:
);scanf(%d,&n);puts(Pleaseinputthedateyouwant:
);scanf(%d%d%d,&year,&month,&day);if(year%4=0&year%100!
=0)|year%400=0)a2=29;for(i=1;i=7)s=(s+n-1)%7;elses=s+n-1;printf(weekday:
);switch(s)case0:
puts(7n);break;case1:
puts(1n);break;case2:
puts(2n);break;case3:
puts(3n);break;case4:
puts(4n);break;case5:
puts(5n);break;case6:
puts(6n);break;if(days+n)=7)r=(days+n)%7;elser=days+n;for(i=0;i42;i+)if(i=r+6&date5&(i+1)%7=0)printf(n);return0;2.#include#include#include#includeusingnamespacestd;typedefstruct_unitstringword;intline;unit;intmain()vectorlist;ifstreamin;stringfileName;coutfileName;in.open(fileName.c_str();if(in.fail()cout文件打开错误,退出temp.word;temp.line=lineNumber;list.push_back(temp);if(in.peek()=n)lineNumber+;in.close();boolisIn=false;vectorcopy;for(unsignedinti=0;ilist.size();i+)isIn=false;for(unsignedintj=0;jcopy.size();j+)if(listi.word=copyj)isIn=true;break;if(!
isIn)copy.push_back(listi.word);vectorlineNo;for(unsignedintm=0;mcopy.size();m+)for(unsignedintn=0;nlist.size();n+)if(listn.word=copym)lineNo.push_back(listn.line);lineNo.push_back(0);intcurrent=0;for(unsignedinto=0;ocopy.size();o+)coutcopyo;for(unsignedintp=current;plineNo.size();p+)if(lineNop=0)current=p+1;break;elsecoutlineNop;coutendl;return0;3.#include#include#include#include#include#include#includeusingnamespacestd;istream*input;/pointertoinputstreamintno_of_errors;/note:
defaultinitializedto0doubleerror(constchar*s)no_of_errors+;cerrerror:
sget(ch)returncurr_tok=END;while(ch!
=n&isspace(ch);switch(ch)case;:
casen:
returncurr_tok=PRINT;case*:
case/:
case+:
case-:
case(:
case):
case=:
returncurr_tok=Token_value(ch);case0:
case1:
case2:
case3:
case4:
case5:
case6:
case7:
case8:
case9:
case.:
input-putback(ch);*inputnumber_value;returncurr_tok=NUMBER;default:
/NAME,NAME=,orerrorif(isalpha(ch)string_value=ch;while(input-get(ch)&isalnum(ch)string_value+=ch;/string_value.push_back(ch);/toworkaroundlibrarybuginput-putback(ch);returncurr_tok=NAME;error(badtoken);returncurr_tok=PRINT;maptable;doubleexpr(bool);/cannotdowithoutdoubleprim(boolget)/handleprimariesif(get)get_token();switch(curr_tok)caseNUMBER:
/floating-pointconstantdoublev=number_value;get_token();returnv;caseNAME:
double&v=tablestring_value;if(get_token()=ASSIGN)v=expr(true);returnv;caseMINUS:
/unaryminusreturn-prim(true);caseLP:
doublee=expr(true);if(curr_tok!
=RP)returnerror()expected);get_token();/eat)returne;default:
returnerror(primaryexpected);doubleterm(boolget)/multiplyanddividedoubleleft=prim(get);for(;)switch(curr_tok)caseMUL:
left*=prim(true);break;caseDIV:
if(doubled=prim(true)left/=d;break;returnerror(divideby0);default:
returnleft;doubleexpr(boolget)/addandsubtractdoubleleft=term(get);for(;)/foreverswitch(curr_tok)casePLUS:
left+=term(true);break;caseMINUS:
left-=term(true);break;default:
returnleft;intmain(intargc,char*argv)switch(argc)case1:
/readfromstandardinputinput=&cin;break;case2:
/readargumentstring/input=newistringstream(argv1);input=newistrstream(argv1);break;default:
error(toomanyarguments);return1;while(*input)get_token();if(curr_tok=END)break;if(curr_tok=PRINT)continue;coutexpr(false)n;if(input!
=&cin)deleteinput;returnno_of_errors;d教师评语及计分
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南 大学 学院 C+ 课程设计 报告