




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1训导实训安本工程实训有两种:第一种为在原来《面象程序设计(C++)》课程练第二种为介绍一种GUI类库的用法在此基础上结合实际应用强化面象GUITMCwxWeKartWi++TKMCWindosKC++MCUniewxWidtT的界面原生性wxWidetK(attolKit为)具有体积很小、速度比较快,且有着更好的移植性。atWin++可以用来适用于个人电脑,windosmobile或者windosEGMCTGI也亦未不可,甚至可以暂时不学习G,只要学习+面象编程,等需要时GI开发也为时不晚。内合计讲解时实践时可选题1C++222C4 章 章继 章多 章重载操作527817884 章综合训合9内合计讲解时实践时可选题1C++222C4 章 章继 章多 章重载操作527817884 章综合训合9本工程实训采用第法,主要采用编程练习的方式进行。根据C++7个模块,每个模块训练半至一天,6天完成。最后布置C++开发工具的选打造成为一个非常易于学习和使用的C++开发工具,提供MFC、ATL等类库的支持。但这毕竟是1998年的,微软公司已经不再提供支持。虽然如此,依然C++VisualC6.0VisualC++VisualC++2005/2008/2010/2012/2015Visual6.0推出的年份C++标准尚未问世,对新标准的支持很不理想,而Visual2005/2008/2010/2012/2015C++、isualC++20/200/201/201/201:710/11,是6++MCL+(ET++++开发TC#开发Visual6.06简单易用的优点,但是6的人来讲可能刚开始不太适应,如果真正熟悉+以及各种类库的原理,这应该不成其为当然,Visual++9MGUI库支持,OpenGLMingW32/GCCC/C++繁体中文语言界面及技巧提示,还支持英语、俄语、法语、德语、意大利语等二十多个国家和地区语言。不过DevC++稳定性不是很好,经常,可用性也远不如VisualC++,更新也很缓慢,作者几乎放弃了这个,其Bug很难得到修复。该采用Delphi开发。Windows/Linux20M。Code::Blocks一直在飞速发展,因此支持的C/C++语法和的库文件。它使用蓍名的图wxWidgetsGUICode::Blocks的代码智能提示和自动完成功能做的不是很好,这恰恰是对于初学者来说比较重要的地方。而且Code::Blocks没有中文语言包,虽然这对于熟练的程序员不受影响,但对于、t1++开发框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功GIGI程式,比如控制台工具和服务器。Qt面象的框架,使用特(称为元对象编译器atC,)以及一些宏,208T年,Qta收购。TerT的集成开发环境默认使用MingW2作为编译器T跨平台版也是免费软TVisual++Vl++TWindowsMFCATLVisualC++2005/2008/2010/2012/2015VisualC++2010QT编C++VisualC++6.0DevC++VisualStudio2005开发工具,需经老师同意。限于仅安装了Windows7,默认安装版本VisualStudio2010VisualStudio2010编程规程序风4①在每个类之后、每个函数定义结束之后都要加空行②if、for、while、do等语句自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加{}。这样可以防止书写。const、virtual、inline、case等关键字之后至少if、for、while等关键字之后应留一个空格再跟左括号‘(()for(initialization;condition;update)。=>=<=+*%&&||!~++&([.80个字符以内。代码行不要过长,否则眼睛看命名规c++文件应以.cpp,头文件以.h结尾,文件名每个单词首字母大写,其它字3类型命名(class类class{结构体struct{共用体Union{}类型定义typedefstruct{枚举enum{字母小写。成员变量以_结尾,函数参数以_开头。全局变量g_开头,静态变量局部实例变量intindex;chartype;stringname;intindex_;voidSetIndex(int{intg_count;ints_number;ints_number_;5常量命名constints_和后面的成员变量标记_并将单词首字母大写。intint{returnvoidsetIndex(int{index_voidswap(int_numA,int{}namespace{#definePI_RAUD#define#ifndefFOO_BAR_BAZ_H#defineFOO_BAR_BAZ_H#endif//注释规//stringstring////()_byDelete:被删除的字符串(原来的字符串//()_toDelete:要从上个字符串中删除的字符串//(出口)_byDelete:返回删除子串后的字符串(新字符串//10(//求列出错误编码//strByDelete//strToDelete//strToDelete子串)//书名////日期:起始日期,如:2013/8/21.9:40--intDeleteString(string&_byDelete,string还是以度为单位),对既是又是出口的变量应该在和出口处同时标明。注释中要强调调用时的方面,可能出错的地方。不注释。例如:longlineCount//线的根数。//工程://作者:**//描述:////版本://修改://为了防止头文件被重复包含,要求对头文件进行定义如下: #defineFILENAME_HFILENAME4、其他注释:在函数内不需要注释每一行语句。但必须在各功能模块3—5行语句,必须加一个注释,注明这一段语句所组成的小模块的作用。对于程序健壮数尽量做到只有一个返回位置。(单单出口)。要求大家函数的返回值,#defineCM_POINT_IS_NULLlong函数名(参数{long //resultCM_OK;//if{result=}return}2goto赋初值。分配的资源在用完后必须马上,并重新赋值。例:if(((filename!=NULL)&&(count>=0)))||(readed==TRUE))5、ifTRUE、FALSE1、0应当将整型变量用“==”或“!=0valueifif(value==0)if(value!=if //valueif应当将指针变量用“==”或“!=NULL说明:在对变 的同时,应对其含义、作用及取值范围进行注释说明系统联调以及代码等。这种关系的说明可在注释或文档中描述。说明:若使用了较好名规则,那么此问题可自动消除⑥严禁使用初始化的变量作为右值说明:特别是在C/C++中赋值的指针,经常会引起系统⑦构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只说明:面面俱到、灵活的数据结构反而容易引起误解和操作①内存分配方式:静态区、栈和a.mallocnewNULL申请与要配对,尽量避免跨域配用free和delete后,要将指针设置为数组分配在静态区或者是栈区,字符数组的值可以改变,例如:chara[]="o";a[0]='X';而指向常量字符串的指针的内容不可以改变。charstrcpystrcmpvoidfunc(intarr[100])voidfunc(int(&arr)[100])sizeof(arr)=400chararr[100]sizeof(arr)=100char*arr[100]一个副本,而实际操作的就是这个副本。8、函数重载、覆盖与隐藏:要应用重载来提高程序的质voidprint(intx)voidprint(floatx)c.virtual可有可无virtual关键字①参数缺省值只能出现在函数的中,而不能出现在定义体中②inline标志用在实现前而不是前11const①对于非数据类型,应该将值传递改为const②对于数据类型,应该为值传constconst其它编程。1、当心那些视觉上不易分辨的操作符发生书写错误经常会把“==”“=||&&<=类符号也很容易发生“丢1”。然而编译器却不一定能自动这类错误,。3567I/O89102C++基实训目的及要Ciostreamconsole输入输出。1题必做,2、3题选一道,4、5、6实训题struct{introw;intcol;float*}表示的是二维float数组,用rowcol标记行和列,nums是一维row*col个floatmain、value、createTwoDimfreeTwoDim。函数createTwoDim拥有一个方式的TwoDim类型参数,传值为int类型的_row和_col。createTwoDim将传入的_rowrow,_colcol,并且动态地确定数组大小为row*col个float单元,然后将数组的第一个元素的地址赋给函数value拥有一个方式的参数_twoDim,传值方式的参数_i和_j,并以引函数freeTwoDim拥有一个方式的TwoDim类型参数,该函数指针所指 空间函数main调用createTwoDim来创建3x4大小的二维数组对于ij,main通过反复调用函数value将值2.5*i*j赋给i、j。然后,main通过反复调用函数value,并应用cout打印所有元素的值;最后,main调用freeTwoDim指针所指的空间。设计一个函数printString,功能如下:如果使用一个string类型参数aString调用printString,若aString的长度不大于10,该函数打印aString;若长度大于10,打印头10个字符。如果使用一个string类型参数aString和一个整形参数count,调printString,aStringcount,aString;若长度大于count,aStringcount个字符。编写一个mainprintStringprintString的工作状况。struct{long设计一个函数print,当使用一个Numeric参数调用print时,该函数输出结10long型数字。每个数字占用一行;string类型参数调用printstring字符串。用来朱喙蜡翅鸟在下一年度的总数方式以日前的总数和其繁殖率1~1,000,000NextYr是下一年度朱喙蜡翅鸟的预计总数,本公式确保下年度的总数也介于1~1,000,000之间:例如,如果当前数目为100,0002.6,234,000。1,000,000,2.625NextYrCurrentYr25年后的615,385900,000,2.6不变,25615,385,2.6,CurrentYr为多少(1~1,000,000)之间,25615385左右!2.63.14,40年后朱喙蜡翅鸟每年的数目将在538,007780,464,538,007,780,4643.57,朱喙蜡翅鸟的数目既不收敛也不震荡,将处于一种随化状态。,模拟MontyHall猜谜,该来源于电视Let'sMakeaDeal,游戏规则如下:中设有三扇门,其中一扇门后是一辆汽车,另外两扇门后各有一头:参与者首先选择其中一扇门,然后,节日将另外两扇门中藏有的那扇打开〔由于有两头,不管参与者如何选择总是可以打开一扇藏有的门),并给参与者一次改选的机会。这样,游戏参与者实际上有三种不同的:,•随机决定是维持原先的选择还是选择另一扇门(例如抛硬币作决定)模拟程序运行时提示用户输人其所作的决定以及用户希望的次数程序使用随机数产生器来决定汽车在哪扇门后面以及用户最开始选择的是哪扇门。若用户采用上述的第二种,程序随机选择是维持原决定还是换另一扇门。程序将用户玩的次数和获胜概率打印出来(若用户选择了藏有汽车的那扇门就算胜利)程序运行结果可能会让你大吃一惊(有关Matyall猜谜的技术参见Gillman撰《earandthets。merMth.M,9(192):)。 |}~! |}~! |}~!“ }~“# ~!#…!“⋮⋮||}~…yz{}}~!…z{|~~!“…{|}上表中,代表表头的那一行按顺序列出了可打印的ASCII码字符。从空格bl到~,(~~!“…{|}释编码方法,假设编码字符串是Walrua,需要进行编码的文本是:MeetmeinSt.空格到~之外的字符不进行编码。在待编码的文本之上重复上述编码字MeetmeinSt.从上述两行文本中按列对应方式依次提取一个字符,可得到多个字符W行第M列对应的字符是%因此编码的第一个字符就是%;第a行第e列对应的字符进行相反的操柞就可对该文本、编写一个程序,可提示用户进行编码或退出操作。如果用户选择编码、部分实训题目参考答3
实训目的及要++数能够定义和调用自定义类的变量掌握使用组合和聚合方法实现对象之间的关联关系。2、92实训题Car类,它的数据成员要能描述一部汽车的品牌(Honda)、型号(如Civic),出厂年份和价格。类接口所包括的成员函数应提供合适的途径来数据成员(如汽车的款式或它的价格compare成Voidcompare(constcar&)compare国际标准(ISBN由被破折号分开的10个数字组成,如内惟一)、。例如,ISBN0-670-82162-40,表明这本书来自说英语的国家;代码为670,标识这本书是由VikingPress的;82162是这本书在VikingPress的;的计算方法如下所示:按如下方法计算一个总和:ISBN中第一个数字加上第二个数字的两倍加第三将上述总和除以11得到余数,如果余数为10,则最后一个特征值为X;如果10,则最后一个特征值就是这个余数。例如,ISBN0-670-82162-4的总和是158114,ISBN设计一个类来表示一个ISBN,并为其设计成员函数,用来对字符串形式的ISBNISBN的有效性。再设计一个类Book一本书的有关信息包括这本书的书名作者、商、城市、日期和价格,同时还应该包含数据成员ISBNCalendar类,使其公有接口包含的成员函数具有如下功能:17761900;1100年;July-1776,日历显示特定的年月;实现一个CollegeStudent类,包含name、year、expectedGrad、major、来计算GPA,以决定GPA指标的高低。设计另一个成员函数,用来显示CollegeStudent的当前课程量,并将剩余的必修课打印出来。设计一个Deck类用来表示一副52张的牌公有接口必须包括用于洗牌、发牌、显示牌局中各方玩牌者所拿的牌以及比较牌的大小关系(QJ大)rand这样的库函数。设计一个Profession类,包含如下数据成员:name,title,credentials. 员函数。该类至少要有12个数据成员和12个成员函数。创建一个适合拟实验的Spaceship类。设计一个构造函数,允许用户指明Spaceship在三中的初始位置、轨道、速度、加速度和目的地。模拟实验要Spaceship在任何时刻的运动情况,并将相关数据打印出来,这些Spaceship的标识、轨道及其他相关数据。如果你手头有一个图形开发······功能:n天(n1,2,…);n天(n1,2,…);打印全部日期或部分日期〔如只打印月份打印某一天到另外一天之间的所有日期如从Wednesday,March21,2001Monday,October1,2001)。、、、Emp类。这个类用社会保险号这样的标识符来惟一标识每一位雇员,该类拥有一些数据成员来表示每一位雇员的属性和特征,如、婚姻状况、月薪、部门、职务以及当前工作等。该类的接口包括和修改这些属性的成员函数。、、、Product类,允许通过如下方式来创建产品对象:部分实训题目参考答4实训目的及要3实训题梅花和黑桃)13张:A,K,Q,J,10,9,…2,用适当的方式实现纸牌CardGameBridgeBridgedeal函数,用13张;CardGamePokerpoker类设计deal函数,用来将纸牌分为n(n从2到7,代表人数)手,每手5张。完Vehicle类,为其设计数据成员,用来代表制造商、型号、生产年类派生出Car类(见实训题目3-1)和Truck类,分别为这两个派生类加人合适的成Vehicle继承的类。3-2BookReferenceFiction设计类,为其设计、地址、号码等数据成员,然后设计相应的成员函数,为上述数据成员提供存取接口。从类派生出的成员函数和数据成员,并设计测试程序测试这些类。设计一些可以从3-6中的Profession类派生出CEOActor类和emarketer3-10EmpManager类,HourlyWorker类和Officer没有这些属性。至少为每个子类添3-11ProductFruit类、DairyMeat类,DairyMilkButter类。0.56个百分点。假定每种产品都拥有计一个成员函数用来依据Supply和demand的变动计算商品价格最后编写一部分实训题目参考答5
.1实训目的及要C++继承、虚拟、抽象、隐藏及覆盖机制定义基类及派生类的成员变量和成员函数,、定义和调用自定义基类及派生类的变量以实现多态机制。25.2实训题对实训题目4-6中的类Emp进行改进使得成员函数inputoutput具个测试程序进试。ShapeShape为抽象基类。Shape带有纯虚成员函draw和resizeShapePoint、Line、Circle、TriangleRectangle类。drawresize函数,用来改变对4-2Vehicle类层次提供以下虚函数·start·computeDeprvehicleVehicle的使用年限为基准(expectedLife是一个数据成员)5.3部分实训题目参考答6载操作实训目的及要1实训题3-5Deck类重载操作符~:d3-7Spaceship类重载前置、后置自增操作符++,前置自增操作符增加一个单位的时间,然后更新Spaceship的位置,最后返回更新的Spaceship。部分实训题目参考答7板实训目的及要C++STLvectorstackqueue队列等容器及相关迭代器1-41题完成,4-82实训题vector1—n3输出,输出最后stack堆栈容器,实现输入一个算术表达式中包含圆括弧、方括弧queuen,输出对应的杨辉三0919代表细胞,细胞的定义为沿细胞m,nm×n的矩阵:4023450006103456050204560067000000008设计一个程序每天为NASDAQ交易所生成三个报表以反映当天的交易<代号><开盘价><收盘价><成交量MSFT135.87137.98表 每个报表均列出代号、开盘价、收盘价、收益率和成交量。第一张报表按收假设输入文件包含如下记录编写一个程序,用来对一个含有n个随机整数的STL容器进行克隆,其n是由用户提供的非负整数。重复元素),两个set的大小不必相同。分别对这两个set进行降序排序,然后将STLmerge算法进行合并操作,该算法的原型如下:template<classclassInputlter2,classOutputIter>DutputItermerge(InputIter1b1,//beginningoffileInputlter1e1,//endoffile1InputIter2b2,//beginningoffile2InputIter2e2,//endoffile2OutputItero);//outputfile设计一个模拟洗牌和发牌的程序,用于桥牌。发牌时,将52张梅花、方块、红桃和黑桃,每种花色包含Ace(A),King(K,Queen(Q7.2部分实训题目参考答vector1—n3输出,输出最后usingnamespacestd;intmain(){vector<int>vec;intn,i;cin>>for(i=1;i<=n;++i){}i=0; iivec.size();//取模,防止下标超出数组范围,并形成循环cout<<vec.at(i)<<ends;//i个元素vec.erase(vec.begin()+i);//该元素已输出,应删除i }return}stack堆栈容器,实现输入一个算术表达式中包含圆括弧、方括弧usingnamespacestd;intmain(){charstringop_left="([{";stringop_right=")]}";stack<char>s;while((c=getchar())!='\n'){if(op_left.find(c)<op_left.length()){ }elseif(op_right.find(c)<if(s.size()0||op_right.find(cop_left.find(s.top())){cout<<"不匹配"<<endl; s.pop();//}}}if(s.size()>0){ cout<<"不匹配"<<endl;}return}利用queue队列容器实现杨辉三角,根据输入的n,输出对应的杨辉三usingnamespacestd;intmain(){intwhile(cin>>n){queue<int>q;for(inti=0;i<=n-1;++i){for(intj=0;j<n-i-1;++j){cout<< }if(i>coutsetw(3)1 }if(i>q.pop()1for(intj=1;j<i;++j){intnum=q.front();num+=q.front();//当前数等于队列中第12个元和,cout<<setw(3)<<num<< }}coutsetw(3)1endl;//}cout<<}return}0919代表细胞,细胞的定义为沿细胞m,nm×n4023450006103456050204560067000000008usingnamespacestd;structPos{intx;inty;Pos(int_x,intintoffset[4][2]={{-1,0},{1,0},{0,-1},{0,intintm,n,i,j,num=0;cin>>m>>n;int**a=newint*[m];for(i=0;i<m;++i){a[i]=newint[n];for(j=0;j<n;++j){cin>>}}queue<Pos>for(i=0;i<m;++i){for(j=0;j<n;++j){if(a[i][j]>Posp=q.front();a[p.x][p.y]=0;for(intk=0;k<4;intx=p.x+offset[k][0];inty=p.y+if(x>=0&&x<m&&y>=0&&y<n&&a[x][y]>0){q.push(Pos(x,y));}}}}}}cout<<num<<endl;return0;}8实训目的及要C++中的iostream2实训题记录文件合并。编写程序,两个按关键数据域排序的文件。程CBarnesAdamsDBarnesB 程序必须每次文件的一行将此行或从另一数据文件的上一行写入1211读一新行221的剩余行(如果有)2的剩余行(如果有)文件程序。程序需要从命令行获得源文件名和目的文件名部分实训题目参考答9合训综合训练目的和要综合运用C++标准程序库,完成模拟真实应用需求的开发项目1综合训练题学生基本信息输入、输出、、删除、排序、查询、数据保存及打开学生成绩管理系 1---成绩输 2---成绩修 3---成绩删 4---成绩查 5---成绩输 6---成绩后输 0---退 请输入您的选择(0---、存在,则文件中的学生成绩数据。若不存在,则创建该文件。、float类型表示。(y/n)n,系统返回主菜示“您真的要删除该学生的信息吗?(y/n)y,则删除该学生信n,系统返回主菜单。删除学生成绩信1---按学号查 2---按查 0---返 请输入您的选择(0---2则,则提示输入。用户输入后,则系统查询有无该学生。若存在,则用户选择“成绩后输出”后,系统将按平均分排序,最终按平均分输出学生成绩信息,包括、学号、、语文成绩、数学成绩、英语成绩、平均分等。同时将信息也保存至文件中。、、、、、、、、
任课教师评分分别占综合总分的60%,10%,10%,20%。A(2)(修改)同学信息B按考试 入学生成绩并且按公式:考试成绩=(语文+数学+外语/3学生数据输入并计算综合总分及名次件C学生选课及学籍管理程过文件了选课内容的数据库数据库中包括7门课(课程内容由学生自己定)第i门课程的接纳的学生数为10×i,i为课程的序号,如第一门课的接纳的学 依此类推每门课的学分数分别为12、3、4、5、6、7,35把学生所选的课按学分总积分由小到大排列,同样学分按的英文学生的参数有:、学号、、总学分、各科成绩,补考情况,中要求有学生的、学号、不及格的科目及补考时间(由编程者自定)教师工作量管理系 验、单个教学任务总A(1)输入教师授课教学信息,包括教师号、、、、认教课程、班级、班级数目、理论、实验。(2)(修改)教师授课教学信息B计算单个教学任务总。计算原则如下表: 单个教学任务总 1.5*(理论+实验 2*(理论+实验 2.5*(理论+实验学任务总之和。C教师授课分配程序他所希望授课的课程表达一个期望值,这个期望值为1,2,…,n,其中1为最高的假定教师和课程都有一个惟一的标识号(教师有唯一的员工号,课程有惟一的课程号)0门课程都有优先,程序以随机的顺序将这些课程分给教师0位教师对某门课程都有期望0位教师中随机选择一个。程序应能处理某些限制,例如,一就将其标记为“工作量未满”状态。517,25,33,42,51;保龄球计10局分10轮,每轮可滚球11010(若是第10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吊装孔使用管理办法
- 日化品仓储管理办法
- 周转材退场管理办法
- 汽车营销与管理办法
- 厂家周转筐管理办法
- 国企国资委管理办法
- 新媒体人才管理办法
- 国资委出租管理办法
- 投标商质疑管理办法
- 增城区供电管理办法
- 2024年江西省上犹县人民医院公开招聘护理工作人员试题带答案详解
- 2025年人力资源管理师(中级)考试真题卷详解与解析含答案
- 2025反洗钱知识竞赛题库(含答案)
- 职业暴露知识培训课件
- 金门民间艺术的创新传承与发展研究-洞察阐释
- 艾滋病护理查房
- 5Why原因分析方法培训
- 2025年中国真人CS行行业市场调研分析及投资前景预测报告
- 产品延迟交货管理制度
- 2025年上海市中考语文真题(原卷版)
- 2025年全国统一高考语文试卷(全国二卷)含答案
评论
0/150
提交评论