复习要求:1.C++语言概述(1)了解C++语言的基本符号。(2)了解C++语言的词汇(保留字、标识符、常量、运算符、标点符号等)。(3)掌握C++程序的基本框架(结构程序设计框架、面向对象程序设计框架等)。(4)能够使用VisualC++6.0集成开发环境编辑、编译、运行与调试程序。2.数据类型、表达式和基本运算(1)掌握C++数据类型(基本类型、指针类型)及其定义方法。(2)了解C++的常量定义(整型常量、字符常量、逻辑常量、实型常量、地址常量、符号常量)。(3)掌握变量的定义与使用方法(变量的定义及初始化、全局变量、局部变量)。(4)掌握C++运算符的种类、运算优先级和结合性。(5)熟练掌握C++表达式类型及求值规则(赋值运算、算术运算符和算术表达式、关系运算符和关系表达式、逻辑运算符和逻辑表达式、条件运算、指针运算、逗号表达式)。3.C++的基本语句(1)掌握C++的基本语句,例如赋值语句、表达式语句、复合语句、输入、输出语句和空语句等。(2)用if语句实现分支结构。(3)用switch语句实现多分支选择结构。(4)用for语句实现循环结构。(5)用while语句实现循环结构。(6)用do…while语句实现循环结构。(7)转向语句(goto,continue,break和return)。(8)掌握分支语句和循环语句的各种嵌套使用。4.数组、指针与引用(1)掌握一维数组的定义、初始化和访问,了解多维数组的定义、初始化和访问。(2)了解字符串与字符数组。(3)熟练掌握常用字符串函数(strlen,strcpy,strcat,strcmp,strstr等)。(4)掌握指针与指针变量的概念、指针与地址运算符、指针与数组。(5)掌握引用的基本概念、引用的定义与使用。5.掌握函数的有关使用(1)函数的定义方法和调用方法。(2)函数的类型和返回值。(3)形式参数与实在参数,参数值的传递。(5)递归函数。(6)函数重载。(7)内联函数。(8)带有默认参数值的函数。6.熟练掌握类与对象的相关知识(1)类的定义方式、数据成员、成员函数及访问权限(public,private,protected)。(2)对象和对象指针的定义与使用。(3)构造函数与析构函数。(4)this指针的使用。(5)对象数组与成员对象。7.掌握类的继承与派生知识(1)派生类的定义和访问权限。(2)继承基类的数据成员与成员函数。8.了解UML的一些相关知识(1)UML的发展史,建模对象。(2)UML的四种类型事物。(3)UML的四种关系。9.函数、运算符重载(1)掌握常用运算符重载的方法,包括成员函数重载和友元函数的重载。(2)掌握虚函数和纯虚函数的概念。(3)在成员函数中实现自加,重载前置自加运算符,重载后置自加运算符.(4)重载加法运算函数operator+,重载赋值运算函数operator=.(5)转换类型运算符10.多态性(1)运算符重载的运用。(2)虚函数的定义。(3)抽象类的声明。一.填空1、#includeiostream.hUsingnamespacestd;intadd(inta,intb);intmain(){intx,y,sum;coutEntertwonumbers:'\n';//在下画线处填上语句,完成用cin读入x和ycinx;ciny;sum=add(x,y);coutThesumis:sum'\n';return0;}intadd(inta,intb){//在下画线处填上语句,完成计算a与b的和并返回之returna+b;}2、#includeiostream.hUsingnamespacestd;intmain(){charname[20];cout”Hello,yourname:”;//在下画线处填上语句,完成将字符串输入到数组name中cinname;//在下画线处填上语句,完成将name数组用cout输出coutnameendl;return0;}3#includeiostream.hUsingnamespacestd;intmul(intx,inty)//mul函数1{returnx*y;}intmul(intx,inty,intz)//mul函数2{returnx*y*z;}voidmain(){inta=3,b=4,c=5;//在下画线处填上语句,用于调用mul函数1couta'*'b'='mul(a,b)endl;//在下画线处填上语句,用于调用mul函数2couta'*'b'*'c'='mul(a,b,c)endl;}4#includeiostream.hUsingnamespacestd;main(){int*p;//声明一个整型指针变量p//在下画线处,用new关键字动态分配一个int型存储区,并将首地址赋给pp=newint;*p=10;cout*p;//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间deletep;return0;}5#includeiostream.hmain(){int*p;//在画线处填上语句,用new关键字动态分配一个int型存储区,并将首地址赋给pp=newint;if(!p){coutallocationfailure\n;return1;}//在下画线处填上语句,将p所指向的存储区赋值20*p=20;cout*p;//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间deletep;return0;}6下列程序的输出结果是7。#includeiostreamusingnamespacestd;intmain(){inti=5;int*p=&i;*p=7;coutiendl;return0;}7下面是用来计算n的阶乘的递归函数,请将该函数的定义补充完整。(注:阶乘的定义是n!=n*(n-1)*...*2*1)unsignedfact(unsignedn){if(n=1)return1;returnn*fact(n-1);}8与成员访问表达式p-name等价的表达式是(*P).name。9.UML的全称为UnifiedModelingLanguage,统一建模语言。10.UML中有结构事物,动作事物,分组事物,注释事物四种类型事物。11.UML中的四种关系为依赖,关联,泛化,实现。12.类Sample的构造函数将形参data赋值给数据成员data。请将类定义补充完整。classSample{public:Sample(intdata=0);Private:Intdata;};Sample::Sample(intdata){【this-data=data;】}(13)若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为【double】。(14)有如下循环语句:For(inti=50;i20;i-=2)couti',';运行时循环体的执行次数是【15】。(15)利用表达式a[i]可以访问int型数组a中下标为i的元素。在执行了语句int*p=a;后,利用指针p也可访问该元素,相应的表达式是【*(p+i)】。(16)下面是一个递归函数,其功能是使数组中的元素反序排列。请将函数补充完整。voidreverse(int*a,intsize){if(size2)return;intk=a[0];a[0]=a[size-1];a[size-1]=k;reverse(a+1,size-1);}(17)有如下类定义:classSample{public:Sample();~Sample();Private:Staticintdate;};将静态数据成员data初始化为0的语句是【intSample::data=0;】(18)“图形”类Shape中定义了纯虚函数CalArea(),“三角形”类Triangle继承了类Shape,请将Triangle类中的CalArea函数补充完整。classShape{public:virtualintCalArea()=0;}classTriangle:publicShape{public:Triangle{ints,inth}:side(s),height(h){}【intCalArea(intside,intheight)】{returnside*height/2;}private:intside;intheight;};二.选择题1建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为()AabcBacbCcabDcba答案:A2下面描述中,符合结构化程序设计风格的是(A)A)使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑B)模块只有一个入口,可以有多个出口C)注重提高程序的执行效率D)不使用goto语句3下面概念中,不属于面向对象方法的是(D)A)对象B)继承C)类D)过程调用4关于面向对象的程序设计方法,下列说法正确的是(D)A)“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理B)“多态性”指的是对象的状态会根据运行时要求自动变化C)基类的私有成员在派生类的对象中不可访问,也不占内存空间D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用5判断字符型变量ch是否为大写英文字母,应使用表达式(D)A)ch='A'&ch='Z'B)ch='A'||ch='Z'C)'A'=ch='Z'D)ch='A'&&ch='Z'6已知下列语句中的x和y都是int型变量,其中错误的语句(C)A)x=y++;B)x=++y;C)(x+y)++;D)++x=y;7执行语句序列(D)intn;cinn;switch(n){case1:case2:cout'1';case3:case4:cout'2';break;default:cout'3';}时,若键盘输入1,则屏幕显示A)1B)2C)3D)128关于动态存储分配,下列说法正确的是(B)A)new和delete是C++语言中专门用于动态内存分配和释放的函数B)动态分配的内存空间也可以被初始化C)当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必用delete释放内存空间D)当动态分配内存失败时,系统会立刻崩溃,因此一定要慎用new9)对类的构造函数和析构函数描述正确的是(A)A构造函数可以重载,析构函数不能重载B构造函数不可以重载,析构函数可以重载C构造函数可以重载,析构函数也可以重载D构造函数不能重载,析构函数也不能重载(10)下列程序的输出结果是(A)#includeiostreamusingnamespacestd;intmain(){chara[]=Hello,World;char*ptr=a;while(*ptr){if(*ptr='a'&&*ptr='z')coutchar(*ptr+'A'-'a');elsecout*ptr;ptr++;}return0;}A)HELLO,WORLDB)Hello,WorldC)hELLO,wORLDD)hello,world11)已知:intm=10;在下列定义引用的语句中,正确的是(A)A)int&x=m;B)inty=&m;C)int&z;D)int&t=&m;(17)下列函数原型声明中错误的是(D)A)voidFun(intx=0,inty=0);B)voidFun(intx,inty);C)voidFun(intx,inty=0);D)voidFun(intx=0,inty);(12)已知程序中已经定义了函数test,其原型是inttest(int,int,int);,则下列重载形式中正确的是(B)A)chartest(int,int,int);B)doubletes