



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件技术基础(C++程序设计)院ホ: 班级: 学号: 姓名: 燕山大学计算机教学实验中心2006年3月说明C++是ー门高效实用的程序设计语言,实现了类的封装、数据隐藏、继承及多态,使得其代码容易维护及高度可重用,已成为我校信息基础教学的主要内容。本实验手册包含三方面内容:实验指导、模拟试题和实验作业,成为我校C++程序设计课程上机实验指导的主要依据。根据实验大纲要求,包含十二个实验及其相关实验作业。实验指导部分由学生课内实验完成,实验作业部分由学生课下完成。本手册由燕山大学计算机教学实验中心丁玲老师执笔,李阳明、窦燕老师审核。由于编写仓促,难免有错误和不足之处,请各位老师和同学指正。第一部分实验指导TOC\o"1-5"\h\z\o"CurrentDocument"实验1编制简单C++程序 1\o"CurrentDocument"实验2选择和循环结构程序设计 7\o"CurrentDocument"实验3函数 9\o"CurrentDocument"实验4递归函数 11\o"CurrentDocument"实验5数组 13\o"CurrentDocument"实验6指针 16\o"CurrentDocument"实验7引用与枚举 19\o"CurrentDocument"实验8类与对象 20\o"CurrentDocument"实验9运算符重载和类模板 23\o"CurrentDocument"实验10单基继承 25\o"CurrentDocument"实验!I多基继承 28\o"CurrentDocument"实验!2文件操作 30第二部分模拟试题3141C++模拟试题3141C++模拟试题2实验1编制简单C++程序ー、实验目的.熟悉VC++6.0编程环境,编制简单C++程序并运行,熟悉C++的编辑、编译、连接和运行过程。.掌握C++数据类型,熟悉如何定义和使用常量和变量,以及对它们赋值的方法。.学会使用C++的有关算术运算符及表达式,特别是自加(++)和自减(-)运算符的使用。二、知识要点C++程序开发过程C++的程序结构由注释、编译预处理和程序主体组成。(1)注释:注释是写程序者为读程序者作的说明与注解,仅供人阅读程序使用,C++编译器把所有注释都视为空白。(2)编译预处理:每个以符号“#”开头的行,称为编译预处理行。(3)程序主体:C++用函数组织过程,函数定义是C++程序的主体,不同的程序由不同的函数按层次结构组织而成。程序主体基本形式main()(… 〃语句序列}程序中的每ー个语句应以分号“;”结束。并且可以根据需要,在程序的前边或中间的任何位置插入以“#"打头的编译预处理命令,为了便于阅读程序,还可以在程序中的任何位置插入以“〃”打头的注释。程序的基本输入、输出语句为cin»・・・;coutvv…;“>>”、"«M分别称为输入、输出运算符;“cin”、“couビ分别表示标准输入、输出设备——键盘、显示器等;“…”是输入、输出的内容,称为输入、输出表达式。开发ー个C++程序,首先熟悉所使用的编程环境,将源程序由键盘输入到计算机内并进行在线修改,并以文件形式(.cpp)保存到磁盘中,该过程称为编辑,ー个源程序可以分放在几个不同文件中;然后进行编译,作用是将源程序文件翻译成二进制的目标代码文件(Qbj),编译前先要使用编译预处理器,对源文件进行预处理;接着被编译的目标文件要进行连接,将编译得到的各目标文件及需要系统提供的文件组成…个具有绝对地址的可执行文件(.exe)。运行可执行文件便可得到结果。2.数据类型①C++的数据类型「整型int 宽字符型charJ字符型七单字符型w_charC基本数据类型[实型{单精度型floatI逻辑型boo!i双精度型double数据类型イ ,数组type[]指针type*空类型void非基本数据类型《结构struct联合union枚举enum类class②常量与变量实型常量:带有小数点的数,float、double等;整型常量:不带小数点的数,int、longint等;字符型常量:用ー对单引号括起来的ー个或多个字符,如‘ぺ:字符串常量:是括在一对双引号内的字符序列,如“Hello”;枚举‘吊’量enumcoloured,white,green}0变量具有以下特点:(1)变量是指程序中使用的ー个被命名的存储区域(称程序实体),用以存放可由程序修改的值,其名称为变量名,其值称为变量值。(2)每个变量应属于ー个特定的类型。符号常量:在声明语句中,用const修饰的标识符将指称ー个“只读的”程序实体,称为符号常量,如语句:constfloatPi=3.1415926o三、实验内容及步骤1.使用VisualC++建立一个非图形化标准C++程序,编译、运行以下程序:#include<iostream.h>voidmain()(cout«"Hello!\n";cout«"Welcometoc++!\n";)具体实验步骤:(1)启动VisualC++6.0开发环境从"开始”菜单中选择"程序"IMicrosoftVisualStudio6.0IMicrosoft
VisualC++6.0»显示VisualC++6.0开发环境主窗口。Projectname:Wln37Dynamic<InkIIbraryNWin32StaticLibrary(2)创建一个项目单击File菜单中的New选项显示New(新建)对话框(如图VisualC++6.0»显示VisualC++6.0开发环境主窗口。Projectname:Wln37Dynamic<InkIIbraryNWin32StaticLibrary(2)创建一个项目单击File菜单中的New选项显示New(新建)对话框(如图1・1所示)。单击Projects标签,在Projects(项目)选项卡中,选择Win32ConsoleApplication(Win32控制台应用程序)。在Location(位置)文本框中指定一个路径d:\c++lab,在PrejectName(项目名称)文本框中为项目输入ー个名字“labl」”,单击OK(确定)按钮。Location:在弹出的Win32ConsoleApplication-Step1of!对话框中选择AnEmptyProject单选项,然后单击Finish(完成)按钮(如图1-2所示)。最后在NewProjectInformation对话框中单击OK按钮,完成项目的建立。0AIICOMA*pWIzard"ClusterResourceTypeWizard三CustomAppWizardDatabaseFHoject«DevStudloAdiHnWizardStExtendedStoredProcWizard金ISAP1ExtensionWizard"MakefileitMFCActiveXCon«rolWlzardQMFCAppWizard|diq0MfCAppWizard|exe|KNewDatabaseWizardtiUtilityProjectMWIwS?Application GCreatenewworkspace。AddtocurrentworkspnceL(JrprnrfrtHvnfFliesPro|ects|Workspaces|OtherDocumentsCancel图1・1New对话框Elnleh<Back•ヘー:“,i"v””小”LAsimpleapplication.A**Hello.Woridr,application.LAnapplicationthatsupportsMFC.图1-2创建控制台应用程序第一步(3)建立C++源程序文件选择菜单命令ProjectIAddtoProjectINew»弹出New对话框。如图1-3所示,在new对话框的Files选项卡中选择C++SourceFile,并填入文件名称“labl」”,单击OK按钮,完成新建C++源程序文件。X/tiatkindofConsoleApplicationdoyouwanttocreate7SourceCancelI?1FileEditViewInsertProjectBuildToolsWindowHelp-|g|x|二!,吗区!皆聃1string,[Allglobalmembersメ|mainReady图レ4在文件编辑窗口中输入代码在文件编辑窗口中输入代码(如图1-4所示)。选择菜单命令SourceCancelI?1FileEditViewInsertProjectBuildToolsWindowHelp-|g|x|二!,吗区!皆聃1string,[Allglobalmembersメ|mainReady图レ4在文件编辑窗口中输入代码在文件编辑窗口中输入代码(如图1-4所示)。选择菜单命令FileISave保存这个文件。(5)建立并运行可执行程序选择菜单命令Build-〉Buildlabl_l.exe建立可执行程序。如果你正确输入了源程序,此时便成功地生成了可执行程序labLl.exe。如果程序有语法错误,Files|Projects|OtherDocuments|PAddtoproject:图1-3添加新的源程序文件(4)编辑C++源程序文件内容「Ln7,Col1]REC^ActiveServerPage^BinaryFileBitmapFileDC/C»»HeaderFileふCursorFileqHTMLPageコ18nFile::MacroFile克ResourceScript^ResourceTemplate⑥SQLScriptFilefflTexlFileS庫!ab1_1classes■jClassViewI圓FileView嚣include<iostream.h>uoidmain(uoid)cout«"Hello?\n";cout«"Welcometoc++?\nMLocation:labl_l-licrosoftVisualC++-[labl_l.cpp1则屏幕下方的状态窗口中会显示错误信息。根据这些错误信息干源程序进行修改后,重新选择菜单命令BuildIBuildlabl_l.exe,建立可执行程序。选择菜单命令BuildIExecutelabl_l.exe运行程序,观察屏幕的显示内容。(6)关闭工作空间选择菜单命令FileICloseWorkspace关闭工作空间。.调试并分析教材第16页exlll.cpp,如果令x=100,y=50,计算x-y和y-x,并分析シレ果.运行下面程序,观察其输出,体会i++与++i的差别。#include<iostream.h>intmain()(intmyage=20,yourage=30;cout«'TanTvvmyage;cout«,,Youare"vvyourage;myage++;++yourage;coutvv”Oneyearpasses\n,?;coutvv'TamM«myage;cout«''Youare,,«yourage;cout<v"Anotheryearpasses'n”;coutvv'Tam''<<myage++;coutvv''Youare"<<++yourage;coutvv'Tam''<<myage;cout«MYouare“vvyourage;return0;实验2选择和循环结构程序设计ー、实验目的.熟练if和switch选择结构、while和for循环结构及实现循环的方法。.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。二、知识要点C++语句可以分为以下5类:(1)表达式语句:由一个表达式构成一个语句,最典型的是,由赋值表达式构成一个赋值语句。例:a=5:(2)声明语句:ー个名字在使用之前必须先声明,以便建立名字与程序实体之间的映射关系。按声明的程序实体结构对象声明语句可以分为:声明变量;声明函数;声明对象。按产生不产生程序实体,声明语句可分为定义性与引用性两种。(3)空语句:只有一个分号的语句称为空语句。主要用于语法上要求有一条语句但实际没有任何操作可执行的场合。(4)块语句:也称为复合语句或分程序,是括在一对花括号之间的语句序列。在语法上它相当于一条语句,只是在花括号外不再写分号。块语句主要在两种情形下使用:语法要求一条语句,但又难以只用一条简单语句表达的情形;形成局部化的封装体。(5)流程控制语句①条件语句:if0〜else〜②循环语句:for()〜③循环语句:while()〜(4)循环语句:do〜while()⑤结束本次循环语句:continue⑥终止执行switch或循环语句:break⑦多分支选择语句:switch(){easel;case2;default;}⑧从函数返回语句:return三、实验内容及步骤.输入并运行下列程序并分析其功能。main(){intt,a,b,c,d;cout<<“请输入四个数:,';cin»a»b»c»d;cout«"\n排序结果如下:";if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}if(b>c){t=b;b=c;c=t;}if(b>d){t=b;b=d;d=t;}if(c>d){t=c;c=d;d=t;}cout«a«b«c«d;.设计程序找出1〜100间的质数,显示出来。用for或while或do-while循环语句实现。.下面程序统计字符数组c中0、1、2及其他字符出现的次数,分别存放在变量i。、il、i2中,统计结束后输出它们的值。要求:分析出现结果的原因,如何修改使结果正确。#include<stdio.h>#include<conio.h>voidmain()charc[]="0123456789001112222”inti0=0,il=0,i2=0,i3=0;for(inti=0;i<19;i++)switch(c[i]){case'0':i0++;caseT:il++;case,2,:i2++;default:i3++;cout«,,iO=,,«iO«endl;cout«Mi1="«\1«endl;cout«,,i2=,,«i2«endl;cout«,,i3=,,«i3«endl;getch();实验3函数ー、实验目的.掌握函数的声明、调用,及函数名重载的方法.熟悉函数实参与形参的对应关系;.能够编制并测试函数。二、知识要点函数结构:函数由函数头与函数体两部分组成函数头类型函数名(形式参数表列)类型规定为函数返冋值的类型,函数名是函数的标识,形式参数表列是括在圆括号中的0个或多个以逗号分隔的形式参数。函数体■・个函数体是ー个语句块,是用ー对花括号封装的语句序列。①形式参数与实际参数定义函数时,函数名后括弧中的变量称为形式参数。调用函数时,函数名后括弧中的变量或表达式称为实际参数。定义时,必须指定形式参数(形参)的类型。调用函数时,表示实际参数(实参)的表达式类型必须与对应形式参数(形参)的类型一致。②函数返回函数返冋由返冋语句return来实现return表达式:返回的作用:将流程从当前函数返冋其上级(调用函数);撤消函数调用时为各参数及变量分配的内存空间;向调用函数返回顶多一个值。③函数名重载多个函数使用同一个函数名。④函数的声明类型函数名(参数类型1,参数类型2,…,参数类型n)⑤函数的调用函数名(实参表列)函数的嵌套调用:C++的函数不能嵌套定义,但允许嵌套调用。即允许在调用ー个函数的过程中又调用另ー函数。函数的递归调用:C++不允许在ー个函数的函数体里再定义函数,但允许递归调用。如果函数执行过程中直接或间接地调用自己,称为递归调用。三、实验内容及步骤.调试课本第70页ex211.cpp,写出运行结果,并体会函数调用过程。.模仿ex211编制ー个函数并实现测试,判断输入年份是否为闰年,在主程序中实现输入输出。.编程求下式的值:ぺ+ボ+ガ+ガ+…+ペ。,其中,n=l,2,3。编写函数时,设置参数n的默认值为2〇解:设f(n)=1?+ボ+ガ+ガ+,"+ガ”,则£(11)=11(1+11(1+11(+3)))。实现本题功能的程序如下:#include<iostream.h>intfunc(intn=2);voidmain()coutくくfunc(1)くく",";cout<<func()<<",";cout<<func(3)<<endl;intfunc(intn)ints=0;for(inti=l;i<=10;i++)s=n*(1+s);returns:实验4递归函数ー、实验目的.掌握函数的嵌套调用和递归调用的方法;.掌握局部变量、全局变量和静态变量、动态变量的使用。二、知识要点.函数的递归调用:C++不允许在…个函数的函数体里再定义函数,但允许递归调用。如果函数执行过程中直接或间接地调用自己,称为递归调用。.局部变量和全局变量(D局部变量:在ー个函数内部定义的变量,只能在本函数范围内有效。(2)全局变量:可以为文本文件中其它函数所共用。从定义变量的位置开始到本源文件结束有效。.静态存储变量与动态存储变量(D静态存储变量对于全局变量,在程序开始执行时就给它分配内存单元,直到程序终结时オ释放。它可由本文件和其它文件中的函数所引用。对于静态外部变量,即冠以static的全局变量,也在编译时分配在静态存储区,它只在本文件内有效,其它文件不能引用。对于局部静态变量,即在局部变量前冠以关键字static的变量,在编译到它时分配存储单元,直到程序结束オ释放。函数调用结束后,变量保留上一次函数调用结束时的值。静态局部变量不能被其它函数访问。当全局变量和静态局部变量未赋初值时,系统自动置为〇。(2)动态存储变量在程序运行期间根据需要进行动态的分配存储空间的变量。三、实验内容及步骤.调试教材第77页ex219.叩p,体会函数的递归调用。.编写函数用递归方法求1+2+3+…+n的值,在主程序中提示输入整数n。#include<iostream.h>#include<math.h>intfnl(inti);voidmain()inti;coutv<”请输入ー个正整数:";cin»i;coutvv”从!累カロ至ザvvivv”的和为:“vvfnl(i)vvendl;)intfnl(inti)(if(i==l)return1;elsereturni+fnl(i-l);.编制ー个递归结构的函数,求1!+2!+3!+4!+…+⑸的值实验5数组ー、实验目的.熟悉基本数据类型,及表示形式和取值范围;.掌握ー维数组和二维数组的定义、赋值和输入输出方法;.掌握字符数组和字符串数组的使用;.掌握与数组有关的算法(特别是排序算法)。二、知识要点1.ー维数组数组定义:类型数组名[大小]下标是数组元素到数组开始的偏移量。在方括号内使用变量名是非法的。表达式必须能计算出某个常数值,以便编译程序知道为该数组保留多大的存储空间。数组初始化:数组可以初始化,即在定义时使它包含程序马上能使用的值,初始化表达式按元素顺序依次写在ー对花括号内。值的个数不能多于数组元素的个数。数组引用:定义了数组,就可以对数组中的元素进行引用。引用方式为:数组名[下标]5.字符数组初始化两种方法:chararray[10]={"hello"};或chararray[10]={};C++中,必须使用字符数组来存储字符串,字符数组中的每个数组元素存储ー个字符,并且最后ー个数组元素存储空值字符、〇,作为字符串结束标志。6,二维数组C++中的数组可以有多个下标,数组中每个元素需要两个下标来表示称为二维数组,第一个下标表示该元素所在行,第二个下标表示所在列。二维数组也可在定义时初始化。例:intarray⑵[3]={{1,2,3},{4,5,6}};7.数组应用:排序冒泡排序法、插入排序法、快速排序法。三、实验内容及步骤.把有10个整数元素的数组用冒泡排序法按由小到大升序排列。#include<iostream.h>voidbubble(int[],int);voidmain()intarray[]={5526432,12973,26,37);intlen=sizeof(array)/sizeof(int); 〃兀系个数for(inti=0;i<len;i++) 〃原始顺序输出cout«array[i]«^^,^^;cout«endl«endl;bubble(arrayjen); 〃调用排序函数voidbubble(inta[],intsize) 〃冒泡排序inti,temp;for(intpass=1;pass<size;pass++) 〃共比较size"!轮for(i=O;i<size-pass;i++) 〃比较一轮if(a[i]>a[i+l])temp=a[i];a[i]=a[i+1];a[i+1]=temp;for(i=0;i<size;i++)cout«a[i]«^^,^^;cout«endl;.调よ程序。函数fun功能是:实现B=A+A、即把矩阵A加上A的转置存放在B中返冋main函数。例如:输入下面矩阵:其转置矩阵为:程序输出:1 2 31 4 72 6 104 5 62 5 86 10 147 8 93 6 910 14 18核心程序如下#include<iostream.h>main()(inta[3][31={{l,2,3},{4,5,6},{7,8,9}},t[3][3];inti,j;fun(a,t);for(i=0;i<3;i++){for(j=O;j<3;j++)cout«t[i][j]«endl;}}voidfun(inta[3][3],intb[3][3])(inti,j;for(i=0;i<3;i++)for(j=O;j<3;j++)b[i]U]=a[i]U]+aU][i];}.以下程序的输出结果是:main()(inti,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i;for(i=0;iv3;i++) p[i]=a[i*(i+l)];for(i=0;i<3;i++) k+=p[i]*2;cout«k«endl;实验6指针ー、实验目的.掌握指针的定义、地址和运算;.学会数组与指针、函数与指针的使用方法。二、知识要点.指针类型 定义指针变量: 类型标识符・标识符建立指针:包括定义指针和给指针赋初值。用&操作符可获取变量的地址,指针变量用于存放地址。间接引用指针:间接引用指针时,可获得由该指针指向的变量内容,既可用于右值,也可用于左值。指针的运算:与整数相加、减运算;同一数组中各元素地址间的关系运算和相减运算;赋值运算。指针变量引用:&取地址运算符;・指针运算符。常见表达式的含义:f:变量pf:指向f的指针变量,其值为f的地址&f:变量f的地址,与pf等价*pf:pf所指向的变量,与f等价*(&f):与・pf(即f)等价&0^。:与&£(即pf)等价.数组与指针数组名指针如果把任何数组都广义地当作向量,那么,数组名是指向这个广义的第一个元素的指针,对ー维数组来说,它指向第一个数据,对二维数组来说,它指向第一行,对三维数组来说,它指向第一页。指向数组的指针它与数组名指针不同之处在于,它可以通过赋值指向类型相同的其他数组元素,而数组名只能固定地指向某一确定的数组的元素。.指向指针的指针C++中,可以定义指向其它指针变量的指针变量,这种指针变量中存储着其它指针变量的地址,因此,称为指向指针的指针。pxppxpxPX是指向变量X的指针,称ー级指针;ppx是指向PX的指针,称二级指针。ー级指针使用符号“ボ二级指针使用符号“**”来标识。.使用++和一运算符的特殊问题下面这两条语句执行结果是完全不相同的。*A++=getchar();*++As=getchar();第一条语句把getchar()返回的字符赋给A所指向的当前单元,然后递增A;第二条语句首先递增A中的地址,然后把getchar。函数所返回的字符赋给递增后的地址所指向的单元。运算优先级从右到左。三、实验内容及步骤.下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。提示:程序中给・p分配的内存没有被释放掉。#include<iostream.h>intFnl();intmain()inta=Fnl();coutvv'Thevalueofais:"vva;return0;intFnl()int*p=newint(5);return*p;.设)计ー个含有指针类型的程序:定义ー个整型变量a,ー个整型指针p,ー个引用r,通过p把a的值改为10,通过r把a的值改为5。参考:voidmain()inta;int*p=&a;int&r=a;&p=10;r=5;.调试并分析以下程序输出结果。#include<stdio.h>structstuintnum;charname[10];intage;)fun(structstu*p)(printf("%s\n",(*p).name);)main()(structstustudents[3]={{9801,“Zhang”,20},
{9802,"wang",19},
{9803,"Zhao",18});fun(students+2);实验フ引用与枚举ー、实验目的.熟悉引用的声明、特点及参数。.掌握枚举类型的定义、运算和应用。二、知识要点.引用引用:把某实体的地址变量(指针)作为该实体的别名的机制引用声明类型&引用名=变量名:引用必须初始化,在声明语句中为引用提供的初始值必须是ー个变量或另一个引用。引用是实体的别名:对引用的存取就是对变量的存取;引用与被引用的实体具有相同的地址。引用参数C++引入引用的主要目的是建立某种类型的虚实体,这种虚实体不占有实际的存储空间。它作为函数参数时,保证把实体的地址,而不是把实体本身传递给函数,使用引用使人会觉得直接而实在。.枚举类型枚举是ー种用户定义的类型,使用前必须先定义,定义格式为:enum枚举类型名{枚举成员表列}:枚举是ー组被命名的整型常量集合声明:enum枚举类型名变量名表列也可以在定义ー个枚举类型的同时,声明一些变量属于这种类型Enum枚举类型名{枚举成员表列}变量名表列:定义并不分配存储空间,声明后枚举变量才能得到分配的存储空间。运算:枚举变量可进行赋值(限枚举常量)或关系运算。三、实验内容及步骤.调试教材第166页ex392.cpp,注意枚举变量的应用。.设计一个含有枚举类型的程序,要求:将12个月份定义成枚举类型根据两个人的生日判断相差月份。.调试教材第164页ex387.cpp,注意引用的使用。实验8类与对象ー、实验目的1.掌握C++类的概念和基本组成,学会设计类,掌握类的使用方法;2,熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用;3.掌握静态数据成员的使用。二、知识要点.类定义:客观世界中的事物往往需要从属性与行为两个方面进行描述,在C++中,分别用数据成员与函数成员来表现,并且将它们封装在ー起,形成ー种抽象数据类型——类。类具有数据成员和成员函数两种成员,类成员分为公开的(public)和私有的(private)两类。外界不能访问ー个对象的私有部分,它们与对象间的信息传送只能通过公开成员函数等特定方法进行。类接口定义的基本格式为class类类型名{private:私有成员声明public:公开成员声明关于接口的说明:一个类的接口定义由一些声明语句组成。(2)私有成员只能由类作用域中的函数访问,公开成员是类对象的信息接口。(3)关键字class也可以用struct代替。(4)类定义的最后ー个花括号外面的分号不可缺少。类的实现类接口的实现,实际上是要进ー步定义它的成员一成员函数。(1)在类定义外部定义成员函数时,在成员函数函数头中函数名之前,应使用作用域限定符“::”指明该函数是哪个类中的成员函数。定义格式:类型类名::成员函数名(参数表)(函数体(2)除特殊指明外,成员函数操作的是同一对象中的数据成员。3)成员函数也可以定义为内嵌的。(4)对ー个已经使用的类,可以通过为其增添新的成员函数来修改该类对象的行为。.构造函数:(1)构造函数具有特定名字一与类相同;(2)构造函数不能标以返回类型,它的返回值是隐含的;(3)构造函数在机器执行对象声明语句时被自动调用,去初始化被声明的对象;(4)构造函数允许按参数却省调用形式定义;(5)构造函数名可以重载;(6)当没有为ー个类定义任何构造函数的情况下,C++编译器总要为它自动建立一个无参的构造函数。析构函数:对象撤销时被自动调用,释放构造函数分配的空间。〜函数名,不指定返回类型,不指定参数。复制构造函数:只有一个参数,使所在类的对象的引用,用于ー个对象初始化另ー个对象。X::X(constX&);对象成员:在类定义中使用的类类型的数据成员,构造函数形式如下X11X(arg1,arg2,,,,,argn):membl(argl),memb2(arg2),membn(argn)(…〃构造函数体).友元:这个外部函数可以例外地访问类的任何私有成员。在类定义外定义,使用类对象引用作参数,可以访问对象的公开、私有成员。友元关系是单向的、不具有交换性、不具有传递性。friend函数类型函数所在类名::函数名(参数表列);.静态成员:在编译时创建,一直到程序结束,任何对象都可以访问。对静态数据成员要进行引用性声明和定义性声明。定义为static数据类型数据成员名静态成员函数调用格式:类名::静态成员函数名()三、实验内容及步骤.输入调试教材第180页ex41l.cpp,体会类的定义、实现和构造函数。修改该程序:①增加一个数据成员“memo”,字符串类型,并为其分配动态存储空间;②增加一个Person类的释放函数;③增加一个复制构造函数。.设计ー个Birthday类,包含数据成员year、month>day,成员函数Print。和Age(),计算年龄并输出。构造ー个Birthday的对象进行测试。.改正以下程序中的错误,并分析错误原因。提示:该程序中point类的构造函数定义不正确,在main。中对数据成员的访问不正确。#include<iostream.h>classpoint{intxl,x2;public:point(intx,inty);//•••voidmain()pointdata(5,5);cout<<data.xl<<endl;cout<<data.x2くくendl;修改如下:^include<iostream.h>classpoint{intxl,x2;public:point(intx,inty){point::xl=x;point::x2=y;}voiddisp(){cout<<xl<<endl;cout<<x2<<endl;}//...voidmain()pointdata(5,5);data,disp();实验9运算符重载和类模板实验目的.掌握C++中运算符重载的机制和运算符重载的方式;.掌握类型转换的方式、内存的动态分配;.掌握类模板的定义,掌握类模板的实例化。知识要点.运算符重载成员函数方式:单目(返回类型类名"operator单目运算符())双目(返回类型类名::。perator双目运算符(类名&引用))下标运算符重载:类型类名::operator口(下标类型形参)(函数体提取符重载:预定义插入符ostream&ostream::operator«(type&obj);预定义提取符istream&istream::operator»(type&obj);运算符重载规则:(1)不可以重载非C++的运算符;(2)运算符重载可以采用成员函数方式或友元方式;(3)被重载的运算符必须保持预定义的的优先级与结合性(4)应尽量使重载的运算符语义自然、好理解;(5)注意各运算符之间的联系。.类模板:template<classType>class类名(…卜(1)每•个类模板的成员函数的外部定义,都与一一般函数模板的定义ー•样,必须以类型形参开始,此外还应加以函数返冋值类型、类范围、函数名、形参序列,类名后面必须加上类型形参。(2)类模板是类的抽象类型,它的实例化是生成一个具体的类。三、实验内容及步骤1.分析调试教材第236页ex461.cpp,自行设计ー个简单的类模板。2,在实验8程序2基础上,Birthday类中重载运算符<<。3.指出下面程序中的错误,改正并运行。#include<iostream.h>classPoint{private:intxl,x2;public:Point(intx,inty){xl=x;x2=y;}intx_cord(){returnxl;}inty_cord(){returnx2;}main()Pointdata(5,6);cout«data.x_cord()«endl;cout«data.y_cord()«endl;Pointmore_data[20];实验10单基继承ー、实验目的.掌握派生的类别与方式;.了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制二、知识要点.派生类class派生类名:派生方式基类名{
private:新增私有成员声明语句表列public:新增公开成员声明语句表列卜派生特点基类派生类Public派生PublicProtectedPrivatePublicProtectedPrivate&PrivatePrivate派生PublicProtectedPrivatePrivatePrivatePrivate&PrivateProtected派生PublicProtectedPrivateProtectedPrivatePrivate&Private.派生类的构造函数Y::Y(argXl,argX2,…,argYl,argY2,-):X(argXl,argX2,-)注:派生类的构造函数要直接调用基类的构造函数。构造函数与释放函数是不能继承的,对派生类必须重新定义构造函数与释放函数。多基派生构造函数:D::D(参数表1,参数表2,…,参数表n):Bl(参数表1),B2(参数表2),…Bn(参数表n)(…〃函数体三、实验内容及步骤.调试课本第247页ex511.cpp,由Person类public派生的Employee类。.设计ー个单基继承的类层次程序,利用Person类派生出student类,增加属性xh(学号),测试该类。.定义ー个Document类,包含成员变量name,从Document派生出Book类,增加PageCount变量。#include<iostream.h>#include<string.h>classDocument{public:Document(){};Document(chat*name);char*Name;//Documentname.voidPrintNameOf();//Printname.Document::Document(char*name)Name=newchar[strlen(name)+1];strcpy(Name,name);};voidDocument::PrintNameOf(){cout«Name«endl;}classBook:publicDocument{public:Book(char*name,longpagecount);voidPrinNameOf();private:longPageCount;};Book::Book(char*name,longpagecount):Document(name){PageCount=pagecount;}voidBook::PrintNameOf(){coutvv“Nameofbookア;Document::PrintNameOf();}voidmain(){Documenta("Documentl'');BookbC'Bookド/。〇);b.PrintNameOf();实验!1多基继承ー、实验目的1.掌握多基继承的使用,访问方法;2,理解类层次中访问规则;4.掌握虚函数的定义及使用,对多态性的支持二、知识要点1.多基派生classD:派生方式1Bi,派生方式2B2,…,派生方式nBn{);2虚基类定义class派生类名:virtual派生方式基类名{.多态性与虚函数ー个接口,多种方法。virtual函数类型函数名{…}virtua!可以将public或protected部分的成员函数声明为虚函数;ー个虚函数属于它所在的类层次结构,不只属于某ー类;不能把虚函数声明为静态的或全局的,也不能把友元说明为虚函数,但虚函数可以是另ー个类的友元函数。.纯虚数声明virtua!类型函数名(参数列表)=0;三、实验内容及步骤.利用Person类和Birthday类派生出student类,增加属性score(成绩)。设计一个多基继承的类层次程序。.分析下列程序中的访问权限,并回答所提的问题。Sinclude<iostream.h>classA(public:voidfl();A() {il=10;jl=ll;}protected:intjl;private:inti1;classB:publicApublic:voidf2();B() {i2=20;j2=21; }protected:inti2;private:inti2;classC:publicBpublic:voidf3();CO{i3=30:j3=31:}protected:intj3;private:inti3;voidmain()Aa;Bb;CC;冋答下列问题:①派生类B中成员函数f2()能否访问基类A中的成员flO,il和jl呢?②派生类B的对象b能否访问基类A中的成员flO,i!和j!呢?③派生类C中成员函数f3()能否访问直接基类B中的成员f2()和j2呢?能否访问间接基类A中的成员flO,jl和il呢?④派生类C的对象c能否访问直接基类B中的成员f20,i2和j2呢?能否访问间接基类A中的成员flO,j!和i!呢?实验!2文件操作ー、实验目的.掌握基本的输入输出操作及格式;.用C++预定义的文件I/O类进行文件输入输出。二、知识要点文件操作:打开文件、读写文件、关闭文件。低层次I/O机制:intcreat()>intopen()>intclose()>intread()>intwrite()高层次!/O机制:字符I/O函数getchar()>字符串I/O函数gets。、格式化!/O函数printf()流类库:streambuf类、ios类、ostream类、istream类、iostream类三、实验内容及步骤.使用I/O流以文本方式建立一个文件testl.txt,写入字符“已成功写入!”#include<fstream.h>voidmain(){ofstreamfile1("testl.txt");filekv”已成功写入!”;filel.close();上仿以上程序,编制一段源程序,使用I/O流以文本方式打开testl.txt,读出内容并显示出来。.设字符串stringゴI23456789”,用串I/O的方法编程逐个读取这个串的每个数,直到读完为止,并在屏幕上输出。#include<iostream.h>#include<strstrea.h>voidmain()intn;charstring[]="l23456789n;istrstreams(string);while(!s.eof()){s»n;cout«n«ncout«endl;C++模拟试题1ー、单选题.C++程序的基本单位是A,程序行 B,语句C.函数D.字符.假设所有变量均为整型.则表达式(a=4,b=6,a++,a+b)的值是A.10B.11C.9D,4.下列程序段运行后x的值是:a=b=c=0;x=35;if(!a)x-selseif(b);if(c)x=3;elsex=5;A.34B.3C.35D.54,若有定义:floatw;inta,b;则合法的switch语句是A.switch(w){case1.0:cout«n*\\nn;case2.0:cout«,,**\\nH;)B.switch(a);{case1cout<v"*\\n";case2cout«”**\\n";)switch(b){case1:cout«n*\\n";default:cout«,,\\nM;case1:cout«n**\\n";}switch(a+b){case1:cout«f,*\\n";case2:cout«"**\\n";default:cout«n\\nH;).有以下程序段intk=0;while(k=l)k++;while循环执行的次数是A,无限次 B.有语法错,不能执行C.一次也不执行D.执行1次.下面程序的输出结果是:voidmain(){inty=9;for(;y>0;y-){if(y%3==0){cout«--y;continue;}A.741B.852C.963D.875421.关于内嵌函数,以下说法正确的是:A.内嵌函数中可以存在循环结构和SWITCH结构.B.内嵌函数可以在调用之后定义,只要在调用前声明即可.C.使用内嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度D.内嵌函数可长可短..下列程序的输出结果是:intrfact(intn){intc;if(n==l)c=l;elsec=n*rfact(n-l);return(c);}voidmain(){cout«rfact(5);}A.1B.24C.120D.720.以下程序的输出的结果是:intx=3;voidincre()staticintx=l;x++;cout«x;voidmain()inti;for(i=l;iv=x;i++)incre();A.123B.234C.222D.Ill.请选出以下程序的输出结果:#defineMIN(x,y)(x)<(y)?(x):(y)voidmain(){inti,j,k;i=10;j=15;k=l〇・MIN(i,j);cout«k;)A.15B.100C.10D.150.若有下面的说明和定义,则sizeof(ua)和sizeof(aa)的值分别是structaa{shortrl;doubler2;floatr3;unionuu{charul[5];longu2[2];}ua;}mya;A.13 23B.1327C.818D.8 22.合法的数组定义是A.intaロゴstring" B. inta[5]={0,l,2,3,4,5}C.chara="string" D. chara[]={0,l,2,3„4,5).若有以下说明:intw[3][4]={{0,l},{2,4},{5,8}};int(*p)[4]=w;则数值为4的表达式是A.*w[l]+l B.p++,*(p+l) C.w[2][2]D.P[l][l].设有说明语句int(*ptr)[m];其甫的标识符ptr是A.m个指向整型变量的指针B.指向m个整型变量的函数指针C.ー个指向具有m个整型元素的ー维数组的指针D.具有m个指针元素的ー维指针数组,每个元素都只能指向整型变量15.若有以下说明:inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是A.*p+6 B.*(p+6)C.*p+=5D.P+5.有如下程序#include<iostream.h>voidmain(){charch[2][5]={"6937”,"8254”},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for0=0;p[i][j]>,\0,;j+=2)s=10*s+p[i][j]-40,;cout«s«endl;该程序的输出结果是A.69825B.63825C.6385D.693825.下面程序的输出是#include<iostream.h>sub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}sub3(char*a,char*b){charc;c=*a;*a=*b;*b=c;}voidmain(){chara,b;a='A';b=,B,;sub3(&a,&b);cout«a«b;a='A';b=,B,;sub2(&a,b);cout«a«b;a='A';b=,B,;subl(a,b);cout«a«b;A. BABBAB B. ABBBBAC. BABABA D. BAABBA18.structsk{inta;floatb;}data,*p;若有p=&data,则对data中的a成员的正确引用是A.(*P).dataB.(*p).aC.p->data.aD.p.data19.以下程序的输出结果是#include<iostream.h>fun(intn,int*s){intfl,f2;if(n==llln==2)*s=l;else{fun(n-l,&fl);fun(n-2,&f2);*s=fl+f2; }voidmain(){intx;fun(6,&x);cout«x«endl;A.9B.8C.7D.620.以下程序的输出结果是#include<iostream.h>main(){char*s=n12134211M;intv[4]={0,0,0,0},k,i;for(k=0;s[k];k++){switch(s[k]){case,r:i=0;case'2':i=l;case3:i=2;case4:i=3;v[i]++;for(k=0;k<4;k++)cout«v[k];A.4211B.0008C.4678D.8888.在C++类中,ー个保护成员是通过关键字加以说明的A.virtualB.protectedC.publicD.protect.每个类()构造函数。A.只能有一个B.只可有公有的C.可以有多个D.只可有缺省的.假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb--;},则执行Ax(8,9):语句后,x.a和x.b的值分别为()A.8和9B.8和63C.72和8D.8和72.类的释放函数是在什么时间被自动调用的?A.类创建时 B.创建对象时C.删除对象时D.不自动调用.若派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()A,私有成员B.公有成员 C.保护成员D.保护成员或私有成员.在C++中,对于基类的public成员,当以protected方式派生一个新类时,该成员将成为派生类的成员。A.private B.protected C.public D.非法.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是()A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D,引进了类和对象的概念.继承机制的作用是A.信息隐藏 B.数据封装 C.定义新类D.数据抽象.下列哪ー个不是类的特性〇A.多态性 B.继承性 C.封装性 D.虚拟性30若类Y是类X的友元类,则下列哪种访问关系是正确的A.类Y的成员不能访问类X的私有成员B.类Y的成员可以访问类X的私有成员C.类X的成员可以访问类Y的私有成员D.只有类X的公共成员才能访问类Y的私有成员二、程序修改1.打开考生文件夹文件下的modil.dsw工作区,程序modil.cpp的功能为:从键盘输入ー个正整数数m,然计算机1!+2!+…+m!的值。例如输入5,,则输出结果为153。请改正sumjc函数中两处错误,并运行该程序,使它能得出正确的结果。注意:改完程序中的错误后,一定要将该程序进行编译、连接、生成可执行程序,否则无法正确评分。每个程序的两处错误,均在/*****found******/下面,不要改动main函数,也不得更改程序的结构。否则,后果自负。#include<fstream.h>#include<iostream.h>#include<conio.h>#inciude<stdio.h>#include<stdlib.h>voidwwl();longsumjc(intn)inti,j;longsum=0,jc;/************found************/fbr(i=1;i<=n;i++)jc=l;/************found************/for(j=1;j<=n;j++)jc*=j;sum+=jc;returnsum;voidmain()intk;cout«"Pleaseenteranumber”;cin»k;cout«endl;cout«',l!+2!+...+',«k«n!=',«sumjc(k)«endl;wwl();/・以下部分与考生答题无关,考生不必阅读,更不得进行任何修改・/voidWriteData(intn)ofstreamoutput;output.open(”moutl.daビ);output«sumjc(n);output.close();voidwwl()intk;ifstreaminput;input.open("min1.daビ);input»k;input.close();sumjc(k);WriteData(k);2.打开考生文件夹中的modi2.dsw工作区,程序modi2.cpp是Point类,数据成员为两个整数xl和x2,函数成员为构造函数、两个数据成员分别返冋两个数据成员的平方和与平方差。主程序测试该类。例如输入两整数4,3,则输出为25,7。修改程序中的错误,并运行该程序,使它能得出正确的结果。注意:改完程序中的错误后,一定要将该程序进行编译、连接、生成可执行程序,否则无法正确评分。每个程序的两处错误,均在ノ*****found******/下面,不要改动main函数,也不得更改程序的结构。否则,后果自负。#include<fstream.h>#include<iostream.h>#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>voidwwl();classPoint{private:intxl,x2;public:Point(intx,inty)〃类Point的构造函数xl=x;x2=y;/*********oi1nd***********/intx_cord(){return(xl*xl+x2*x2)}; 〃返回xl与x2的平方和inty_cord()〃返回xl与x2的平方差return(xl*xl-x2*x2);voidmain()(inti,j;cout«"Pleaseinputtwonumbers:0;cin»i»j;pointdata(i,j);cout«data.x_cord()«endl;cout«data.y_cord()«endl;wwl();/・以下部分与考生答题无关,考生不必阅读,更不得进行任何修改・/voidwwl()inti,j;ifstreaminput;ofstreamoutput;input.open(”min2.dat");input»i»j;Pointaa(i,j);input.close();output.open(”mout2.daビ);output«aa.x__cord()«endl;output«aa.y_cord()«endl;output.close();三、程序设计请编写・个函数voidfun(char*s,chartロ),它的功能是:将s所指字符串中下标为偶数的字符删除,s中剩余的字符形成的新串放在t所指数组中。例如,当s所指字符串中的内容为“ABCDEFGHIJK”,则在t所指数组中的内容应是“BDFHJ”。注意:部分源程序文件及其辅助文件都存在考生考号文件夹下的prog文件夹中,请打开文件PROGcpp。请勿改动其中的主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include<conio.h>#include<stdio.h>#include<iostream.h>#include<fstream.h>#include<stdlib.h>#include<string.h>voidwwl();voidfun(char*s,chart[])(〃参考答案在考生文件夹中的Aprog.datvoidmain()(chars[5O],t[5O];cout«"Pleaseenterstrings:"«endl;cin»s;fun(s,t);cout«endl;cout«"Theresultis:n«endl;cout«t«endl;wwl();)/・以下内容与考试答题无关,考生不必阅读,也不要修改其中的任何语句・/voidwwl()(chars[100],t[100];FILE*rf,*wf;inti;rf=fopen("pin.dat";,r");wf=fopen("poutdaビJw");for(i=0;i<10;i++)(fscanf(rf,"%s",s);fun(s,t);)fprintf(wf,"%s\n",t);fclose(rf);fclose(wf);C++模拟试题2ー、单项选择题.下列单词中,哪个是合法的C++变量名?A.x+yB._xyzC.8xyzD.agy.设x、y、z和k都是int型变量,则执行表达式:x=(y=7,z=14,k=2D后,x的值为A.7B.14C.21D.42.有如下程序voidmain()floatx=2.0,y;if(x<0.0)y=0.0;elseif(x<10.0)y=1.0/x;elsey=1.0;cout«y;该入序的输出结果是A.0.0B.0.25C.0.5D.1.0.voidmain()intx=l,a=0,b=0;switch(x){TOC\o"1-5"\h\zcase0: b++;a++;a++;b++;cout<<a<<'',''<<b;该程序的输出结果是A.2,2B.1,1C.1,0 D.2,1.下列程序运行的结果是:voidmain(){intx=10,y=10,i;for(i=0;x>8;y=++i)cout«x-«““«y«“”;A. 10 10 9 1 B. 9876C. 10 9 9 0 D. 10192.以下程序中,while循环的循环次数是voidmain(){inti=0;while(i<10){if(i<l)continue;if(i==5)break;i++;A.1B.10C.6D,死循环,不能确定次数.关于内嵌函数,以下说法错误的是:A,使用内嵌函数可节省函数调用与返回时的开销,能够提高程序的运行速度.内嵌函数必须在调用之前定义.C.内嵌函数中可以存在循环结构.D.内嵌函数必须是短小的..以下程序的执行结果是:intfun(intn)ints;if(n==1IIn==2)s=2;elses=n-fun(n-l);returns;voidmain()cout«fun(3);}TOC\o"1-5"\h\zA.lB.2C.3 D.4.下列程序的输出结果是:intx=10;intfun(int x){static int a=3;a+=x;return(a);voidmain(){intx=3,n;n=fun(x);cout«n«^^,^^;n=fun(x);cout«n;}A.6,6B.6,8C.6,9D.9,6.下列程序执行后的输出结果是#defineMA(x)x*(x-l)voidmain(){inta=l,b=2,c;c=MA(l+a+b);cout«c;A.6B.8C.10D.12.若有下面的说明和定义,则sizeof(structaa)的值是structaa{shortrl;doubler2;floatr3;unionuu{charul[5];longu2[2];}ua;}mya;A.30B.29C.24D.22.给出以下定义:charx[]=^^abcdefgh^^;charyロ={'a','b','c','d','e','f','g','h'};则正确的叙述为A,数组x和数组y等价 B.数组x和数组y的长度相同C,数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度13.以下程序的输出结果是#include<iostream.h>main(){inti,x[3][3]={1,23,4,5,6,7,8,9};for(i=0;i<3;i++)cout«x[i][2-i]«^^,^^;A.1,5,9,B.1,4,7,C.3,5,7,D.3,6,9,.以下程序执行后,a的值是main(){inta,k=4,m=6,*p1=&k,*p2=&m;a=pl==&m;cout«a«endl;A.4B.0C,1 D.运行时出错,a无定值.若有以下定义:chars[20]="programming'',*ps=s;则不能代表字符。的表达式是A.ps+2B.s[2]C,ps⑵D.ps+=2,*ps16.有以下程序#include<iostream.h>voidmain(){chara[l=,,programming,\b[]ゴ]anguage”;char*pl,*p2;inti;pl=a;p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i))cout«*(p1+i);输ム结果是A.gmB.rgC.orD.ga17.以下程序的输出结果是:#include<iostream.h>main(){charch[3][4]={"123”,"456”,"78"},*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;iv3;i++)cout«p[i];A.123456780B.123456780C.12345678 D.147.有以下程序#include<iostream.h>intfun(intx,inty,int*cp,int*dp){*cp=x+y;*dp=x-y;}voidmain(){inta,b,c,d;a=30;b=50;fun(a,b,&c,&d);cout«c«","«d«endl;
输出结果是A.50,30 B.30,50C.80,-20 D.80,20.以下程序的输出结果是#include<string.h>main()char*a="abcdefghi”;intk;fun(a);cout«a;)fun(char*s)intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++)〃strlen()函数返回参数字符串的实际长度{c=s[y];s[y]=s[x];s[x]=c;}A.ihgfedcbaB.iabcdefghC.abcdedcbaD.ihgfefghi20.下面程序的输出是#include<iostream.h>sub1(chara,charb){charc;c=a;a=b;b=c;}sub2(char*a,charb){charc;c=*a;*a=b;b=c;}voidmain(){chara,b;a='A';b='B';sub2(&a,b);cout«a«b;a='A';b='B';subl(a,b);cout«a«b;A.BBABB.BBBAC.BABAD.ABBA21.ー个类的构造函数()。A.可以有不同的返回类型 B.只能返回整型C,只能返回C,只能返回void型没有任何返回类型.引入友元的主要目的是为了()A.增强数据安全性C.提高程序的效率和灵活性 D.保证类的封装性.在C++中,ー个虚函数是通过关键字()放在其基类说明的前面来加以说明A.virtualB.protectedC.operatorD.this.对基类和派生类的关系描述中,错误的是()A,派生类是基类的具体化B.基类继承了派生类的属性C,派生类是基类定义的延续D,派生类是基类的特殊化.在派生关系中,()。A,构造函数和释放函数是不能继承的B.构造函数可以继承,但释放函数不可以继承C,构造函数不可以继承,但释放函数可以继承D.构造函数和释放函数都能继承.类的构造函数被自动
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高二生物选修1跨学科项目计划
- 桥梁建设中的施工方案与技术措施
- 四年级下期语文学习目标设定计划
- 软件开发质量保障年度工作计划
- 2025北师大版六年级数学下册教学计划评估
- 淇县电磁屏蔽室施工方案
- 智能传感器与物联网-全面剖析
- 2025年小学英语毕业考试模拟卷:英语短剧表演脚本剧本分析与创意构思试题
- 电子音乐创作手法-全面剖析
- 融资租赁合同纠纷答辩状实例
- 2024年司法考试历年真题答案
- 2025年南昌市高三语文二模检测试卷附答案解析
- 八颗行星课件-科学六年级下册教科版
- 2025年上半年福建福州平潭综合实验区文旅发展集团限公司招聘11人易考易错模拟试题(共500题)试卷后附参考答案
- 2025湖南长沙振望投资发展有限公司招聘8人笔试参考题库附带答案详解
- 承插型盘扣式钢管脚手架安全技术标准JGJT231-2021规范解读
- 企业安全风险分级管控和隐患排查治理工作指南
- 2025年4月自考15040习概押题及答案
- 湖北省十一校2025届高三第二次联考数学试卷(含答案)
- 2025届高考物理一轮复习:人教版(2019)高中物理必修第二册基础知识自测填空练习题(含答案)
- 2025年安阳职业技术学院单招职业技能测试题库附答案
评论
0/150
提交评论