面向对象程序设计基础学习提纲_第1页
面向对象程序设计基础学习提纲_第2页
面向对象程序设计基础学习提纲_第3页
面向对象程序设计基础学习提纲_第4页
面向对象程序设计基础学习提纲_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计基础学习提纲第1章 程序设计与c+语言初步1、c+语言程序结构2、c+程序运行3、面向对象程序特征第2章 基本数据类型1、标识符、关键字:标识符的命名规则:以字母或下划线开始,不能包含非法字符2、常量和变量整型常量(十、八、十六进制的正确写法)实型常量(小数形式、指数形式)字符常量(普通字符和转义字符)字符串常量(结束标志、长度)变量(合法变量名、数据类型、作用域、存储类型)符号常量:#define PI 3.14const double PI = 3.14;3、C+输入输出流(无格式输入输出,输入字符串)4、 基本数据类型(整型、实型、字符型、无值型(void)、布尔型)5、

2、 运算符与表达式(重点)运算符的种类、优先级和结合性(编译器会对程序中所有表达式求值)算术运算符及表达式:* 、 / 、 + 、 、%(用于整数运算,可用来判断是否整除)、(自加、自减,只能作用于变量,放在变量前面或后面的区别)关系运算符及表达式:、=、=、= =、!=。运算结果为1(真)或0(假)逻辑运算符及表达式:(会使用&和|书写逻辑表达式,判断时非0即为真,0为假)赋值运算符及表达式:赋值运算符和,左边只能是变量。4、类型转换:如(int);经过强制类型转换后算术表达式的求值例题:2.3.1(p37)练习:2-1、2-3、2-8上机习题:2-2第3章 基本控制结构1、三种基本结构:顺序

3、结构、选择结构、循环结构2、顺序结构(表达式语句、空语句、复合语句)3、if.else语句实现选择结构及其嵌套4、switch语句实现多分支选择,break语句跳出分支结构5、for、while、do.while循环结构(循环次数、循环条件、循环结束后变量的值)6、break语句和continue语句7、多重循环例题:3.2.3 3.2.4 3.2.5 3.2.8 3.3.4 3.3.6 练习:3-2,3-4, 3-6上机习题: 3-3第4章 函数1、函数的有关概念:类型、参数、返回值2、定义函数:确定函数的类型、形参的类型及名称、返回值及一致性、定义位置等。3、函数调用:确定实参及类型、调用

4、方式与方法、参数传递方式(传值调用、传址调用)。4、递归函数及调用:由递推公式定义递归函数5、变量的作用域及存储类型:全局、局部变量的定义及其作用域,局部变量的三种存储类型:自动存储、静态存储、寄存器存储,静态局部变量的初始值及在函数经过多次调用后的值。6、递归程序设计7、预处理命令:宏定义8、库函数例题:4.2.2 4.7.2 练习题:4-6,4-8第5章 类与对象1、 类的定义;类成员的访问控制:公有public、保护protected和私有private。2、 成员函数的定义:在类外定义成员函数。3、 对象的概念:类和对象的关系;构造函数和析构函数;习题:5-2,5-4第6章 复合数据类

5、型1、指针与指针变量的概念、定义、指针运算(不包括指针的关系运算)、初始化。2、一维数组、二维数组的定义及初始化(下标从0开始,二维数组按行排列、根据行列数定义二维数组等)3、指向变量的指针与指向数组的指针的使用(字符指针的各种初始化形式)4、利用字符指针处理字符串(输入、输出、复制、逆序排列、求长度)5、字符串:string类的用法4、常用字符串处理函数(strlen、strcpy、strcmp、strcat)6、指针数组的使用(多个字符串按字典顺序排序)6、对象指针:用指针访问数据成员和成员函数7、指向函数的指针8、结构类型、枚举类型与类型别名例题:6.3.1 6.3.2习题:6-3,6-

6、6,6-9第7章 继承机制1、 继承和派生的概念2、 单一继承:三种继承方式的区别3、 派生类构造函数的定义方法4、 派生类析构函数的注意问题5、 多重继承的声明形式6、 多重继承的二义性及其解决方法第8章 多态性1、 多态的概念2、 函数重载3、 运算符重载:重载为成员函数;重载为友元函数4、 虚函数的声明及其用法5、 虚析构函数的作用6、 纯虚函数和抽象类的概念第10章 输入输出流1、 输入输出流类库2、 文件流的概念:文件的打开和关闭;文件的读写例题:10.5.1, 10.7.1复习题一及参考答案:一、单选题(每小题1分,共6分)1、在每个C+程序中都必须包含有这样一个函数,该函数的函数

7、名为。A.mainB.MAINC.nameD.function2、设x和y均为bool量,则x&y为真的条件是。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假3、下面的哪个保留字不能作为函数的返回类型?。A.voidB.intC.newD.long4、假定a为一个整型数组名,则元素a4的字节地址为。A.a+4B.a+8C.a+16D.a+325、假定AB为一个类,则执行“ABa(4),b3,*p2;”语句时,自动调用该类构造函数的次数为。A.3B.4C.6D.96、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:。A.

8、ABoperator+(AB&a,AB&b)B.ABoperator+(AB&a)C.operator+(ABa)D.AB&operator+()二、填空题(每小题2分,共24分)1、C+语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。2、执行“coutchar(A+2)5的相反表达式为。5、假定一个一维数组的定义为“char*a8;”,则该数组所含元素的个数为,所占存储空间的字节数为。6、变量分为全局和局部两种,变量没有赋初值时,其值是不确定的。7、假定a是一个二维数组,则aij的指针访问方式为。8、假定一个结构类型定义为“structDinta;unionintb;double

9、c;D*d2;”,则该类型的大小为字节。9、对一个类中的数据成员的初始化可以通过构造函数中的实现,也可以通过构造函数中的实现。10、假定AB为一个类,则执行“ABa10;”语句时,系统自动调用该类的构造函数的次数为。11、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为。三、给出下列程序运行后的输出结果(每小题6分,共36分)1、#includevoidSB(charch)switch(ch)caseA:casea:coutwell!;break;caseB:caseb:coutgood!;break;caseC:casec:coutpass!;break

10、;default:coutnad!;break;voidmain()chara1=b,a2=C,a3=f;SB(a1);SB(a2);SB(a3);SB(A);coutendl;2、#include#includevoidmain()char*a5=student,worker,cadre,soldier,peasant;char*p1,*p2;p1=p2=a0;for(inti=0;i0)p1=ai;if(strcmp(ai,p2)0)p2=ai;coutp1p2endl;3、#includeinta=5;voidmain()inta=10,b=20;coutabendl;inta=0,b=

11、0;for(inti=1;i6;i+)a+=i;b+=a;coutab:aendl;coutabendl;4、#includeintLB(int*a,intn)ints=1;for(inti=0;in;i+)s*=*a+;returns;voidmain()inta=1,2,3,4,5,6,7,8;intb=LB(a,5)+LB(&a3,3);coutb=bendl;5、#include#includestructWorkercharname15;/姓名intage;/年龄floatpay;/工资;voidmain()Workerx;char*t=liouting;intd=38;floatf

12、=493;strcpy(,t);x.age=d;x.pay=f;x.agex.payendl;6、#includeclassAinta;public:A(intaa=0)a=aa;A()coutDestructorA!aendl;classB:publicAintb;public:B(intaa=0,intbb=0):A(aa)b=bb;B()coutDestructorB!bendl;voidmain()Bx(5),y(6,7);/后定义的变量将先被释放四、写出下列每个函数的功能(每小题6分,共24分)1、#includeintSA(inta,intb)if(

13、ab)return1;elseif(a=b)return0;elsereturn-1;2、floatFI(intn)/n为大于等于1的整数floatx,y=0;docinx;n-;y+=x*x;while(n0);returny;3、templatevoidWE(Typea,Typeb,intn)for(inti=0;if-name;StrNode*p=f;while(-n)p=p-next=newStrNode;cinp-name;p-next=NULL;五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(10分)一、单选题(每小题1

14、分,共6分)评分标准:选对者得1分,否则不得分。1、A2、A3、C4、C5、B6、B二、填空题(每小题2分,共24分)评分标准:每题与参考答案相同者得2分,否则不得分。1、:2、C3、484、x+yb则返回1,若a=b则返回0,若ab则返回-1。2、求出从键盘上输入的n个常数的平方和并返回。3、模板函数,把数组a的每个元素按逆序放入数组b中。4、建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(10分)评分标准:见参考程序中的注释。#includ

15、e/使用此命令得1分#include#includevoidmain()ofstreamfout(a:xxk1.dat);/定义输出文件流并打开文件得2分if(!fout)cerr文件没有打开!x;while(x!=-1)foutxx;/能够从键盘向文件正确输出数据得6分fout.close();/关闭输出文件流得1分复习题二及参考答案一、 填空题1.C+源程序文件的缺省扩展名为_。2.程序的三种基本控制结构是:顺序结构、 结构、_结构。3.在C+程序中,当函数调用在前、函数定义在后时,则应在主调函数中,在调用前增加对被调函数的_说明。4.在调用具有数组参数的函数时,须以 作为实在参数。5函数

16、递归调用指的是,在函数定义的函数体中又出现直接或间接地调用 。6.C+依据调用中实在参数在 上或 上的不同来确定调用的是重载函数的哪一个。7. 在函数外定义的变量称为 变量。8. 字符串常量是用 括起来的字符序列,在字符串的末尾有一个结束标志 。9. 当撤消一个含有基类和类对象成员的派生类对象时,将首先完成_的析构函数定义体的执行,接着完成_的析构函数定义体的执行,最后完成_的析构函数定义体的执行。10. 设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的_。(2分)11.假定p所指对象的值为25,p+1所指对象的值为46,则*p+的值为_。(2分)1

17、2.假定a为一个整型数组名,则元素a4的字节地址为_。(2分)13.假定一个结构类型的定义为 “struct Dint a; union int b; double c;D* d2;”,则该类型的大小为_字节。(2分)14.假定要动态分配一个类型为Worker的具有n个元素的数组,并由r指向这个动态数组,则使用的语句为_。(2分)二、 写出下列表达式的值及运算过程1设x=2.5,y=4.7,a=7,b=2: 计算表达式x+a%3+(int)y/(int)x的值2设x=2.5,y=4.7,a=7,b=2:计算表达式!(ab)| xy的值3设a=1,b=-2,c=1:计算表达式x=(d=b*b4*

18、a*c, (d=0)?b/(2*a):b/(2*a)+ sqrt(d)/(2*a) 的值 4设有变量说明int a=4,b=2,x=3,y=0:计算表达式(-a+b)&(xy)的值5. int a=1,&b=a,*p=&a,y :计算表达式 y=(a+=b,b+=*p,*p+a) 的值6. 设:int a5=10,20,30,40,50; int *p=&a0;计算表达式+*p+*(a+3)的值。三、读程序, 并将运行结果写在对应输出语句的后面1#includevoid main() int a6=0,1,2,3,4,5; int i=0; for(i=0;i6;i+)if(i%2=0) ai

19、=ai+1; else ai=ai+2; cout ai; 2#includevoid f(int &a,int &b) int t=a; a=b; b=t;void main()int x=10,y=15;f(x,y);coutxtyn;3#includevoid main() int i=10; switch (i) case 9:i+; case 10:+i; case 11:i+; default:i=i+1;coutiendl;4 #include #include struct Worker char name15; /姓名 int age; /年龄 float pay; /工资

20、; void main() Worker x; char *t=WeiRong; int d=45; float f=1235; strcpy(,t); x.age=d; x.pay=f; x.age x.payendl; 四、编程题1设计一程序,它输入10个整数到一个数组中,调整这10个整数在数组中的排列位置,使得其中最大的一个数成为数组的首元素,最小的一个数成为数组的末元素。第 11 页 共 18 页2用递归方法设计函数int arraymin(int d,int size);其中d为数组,size为数组元素个数;arraymin返回d中的最小元素。 3定

21、义描述圆柱体的结构体类型Cylinder,该结构体类型的数据成员为圆柱体底半径r与高h。编写函数Volume()计算出圆柱体的体积。在主函数中定义圆柱结构体变量,输入圆柱体的半径与高,调用Volume()函数计算出圆柱体体积,并输出圆柱体的体积。参考答案一、填空题1. cpp 2. 条件分支 循环 3. 原形 4. 单独的数组名5自身 6. 数量 类型 7. 全局 8. 双引号 09. 派生类 类成员所属类 基类 10. 析构函数11. 25 12. a+16 13. 20 14. Worker* r=new Workern;二、写出下列表达式的值及运算过程15.5 2 0 3 1 40 5.

22、 8 6. 51三、读程序, 并将运行结果写在对应输出语句的后面11 3 3 5 5 7215 10 313 4weirong 45 1235四、编程题1#includevoid main() int data10,m; for(m=0;mdatam; int j=0,k=0;for(int i=1;idataj) j=i; else if(datai0) int d=data0;data0=dataj;dataj=d; if(k=0) k=j;if(k9) int d=data9; data9=datak; datak=d;coutendl”排序后:”;for(m=0;m10;m+) cou

23、tdatamdsize-1) d0=dsize-1; min=arraymin(d,size-1);return min ;复习题三 一、单项选择题 1. C+源程序文件的默认扩展名为( )。 A. cpp B. exe C. obj D. lik 2. 由C+源程序文件编译而成的目标文件的默认扩展名为( )。 A. cpp B. exe C. obj D. lik 3. 由C+目标文件连接而成的可执行文件的默认扩展名为( )。 A. cpp B. exe C. obj D. lik 4. C+程序从上机到得到结果的几个操作步骤依次是( )。 A. 编译、编辑、连接、运行 B. 编辑、编译、连

24、接、运行 C. 编译、运行、编辑、连接 D. 编辑、运行、编辑、连接 5. 以下标识符中不全是保留字的是( )。 A. case for int B. default then while C. bool class long D. goto return char 6. 能作为C+程序的基本单位是( )。 A. 字符 B. 语句 C. 函数 D. 源程序文件 7. 程序中主函数的名字为( )。 A. main B. MAIN C. Main D. 任意标识符 8. C+程序的基本模块为( )。 A. 表达式 B. 标识符 C. 语句 D. 函数 9. 可用作C+语言用户标识符的一组标识符是(

25、 )。A. void define +WORDB. a3_b3 _123 YNC. for -abc CaseD. 2a DO sizeof 10. 存储以下数据,占用存储字节最多的是( )。 A. 0 B. 0 C. “0” D. 0.0 11. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用( )符号作为分隔符。 A. 空格或逗号 B. 逗号或回车 C. 逗号或分号 D. 空格或回车 12. 设”int a=12;”,则执行完语句”a+=a*a;”后,a的值是( )。 A. 12 B. 144 C. 156 D. 288 13. 假设在程序中 a、b、c 均被定义成整型,所赋的

26、值都大于1,则下列能正确表示代数式的表达式是( )。A. 1.0/a*b*c B. 1/(a*b*c) C. 1/a/b/(float)c D. 1.0/a/b/c 14. 设”int a=15,b=26;”,则”cout0 & x=10的相反表达式为( )。A. x10 B. x10C. x=0 | x0 & x10 17. x0 | y=5的相反表达式为( )。A. x=0 | y!=5 B. x0 | y!=5 D. x0 & y=5 18设x和y均为bool量,则x & y为真的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 19设x和y均为

27、bool量,则x | y为假的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 20. 字符串”a+b=12n”的长度为( )。 A. 6 B. 7 C. 8 D. 9 21. 假定下列x和y均为int型变量,则不正确的赋值为( )。 A. x+=y+ B. x+=y+ C. x=+y D. +x=+y 22. 下列的符号常量定义中,错误的定义是( )。 A. const M=10; B. const int M=20; C. const char ch; D. const bool mark=true; 23. 循环语句“for(int i=0; i

28、n; i+) couti*i ;”中循环体执行的次数为( )。 A. 1 B. n-1 C. n D. n+1 24. 在下面循环语句中循环体执行的次数为( )。 for(int i=0; in/2) break; A. n/2 B. n/2+1 C. n/2-1 D. n-1 25. 在下面循环语句中内层循环体S语句的执行总次数为( )。 for(int i=0; in; i+) for(int j=i; jn; j+) S; A. n2 B. (n+1)/2 C. n(n-1)/2 D. n(n+1)/2 26. 在下面循环语句中循环体执行的次数为( )。 int i=0,s=0; whi

29、le(s20) i+; s+=i; A. 4 B. 5 C. 6 D. 7 27. 在下面循环语句中循环体执行的次数为( )。 int i=0; do i+; while(i*i10); A. 4 B. 3 C. 5 D. 2 28. 当处理特定问题时的循环次数已知时,通常采用( )来解决。 A. for循环 B. while循环 C. do循环 D. switch语句 29. 循环体至少被执行一次的语句为( )。 A. for循环 B. while循环 C. do循环 D. 任一种循环 30. switch语句能够改写为( )语句。 A. for B. if C. do D. while 3

30、1. do语句能够改写为( )语句。 A. 复合 B. if C. switch D. while 32. 在下面的一维数组定义中,哪一个有语法错误。( ) A. int a=1,2,3; B. int a10=0; C. int a; D. int a5; 33. 在下面的字符数组定义中,哪一个有语法错误。( )。 A. char a20=”abcdefg”; B. char a=”x+y=55.”; C. char a15; D. char a10=5; 34. 在下面的二维数组定义中,正确的是( )。 A. int a5; B. int a5; C. int a3=1,3,5,2; D.

31、 int a(10); 35. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a12的值为( )。 A. 2 B. 4 C. 6 D. 8 36. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a21的值为( )。 A. 0 B. 4 C. 8 D. 6 37. 若定义了函数 double *function(), 则函数function的返回值为( )。 A. 实数型 B.实数的地址 C.指向函数的指针 D.函数的地址 38. 以下说法中正确的是( )。 A. C+程序总是从第一个定义的函数开始执行 B. C+程序总是从main函数

32、开始执行 C. C+函数必须有返回值,否则不能使用函数 D. C+程序中有调用关系的所有函数必须放在同一个程序文件中 39. 以下叙述中不正确的是( )。 A. 在一个函数中,可以有多条return语句 B. 函数的定义不能嵌套,但函数的调用可以嵌套 C. 函数必须有返回值 D. 不同的函数中可以使用相同名字的变量 40. 函数重载是指( )。 A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 C. 两个以上的函数名字不同,但形参的个数或类型相同 D. 两个以上的函数取相同的函数名,并且函数的返回类型相同 41. 以下关于函数模板叙述正确的是( )。 A. 函数模板也是一个具体类型的函数 B. 函数模板的类型参数与函数的参数是同一个概念 C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数 D. 用函数模板定义的函数没有类型 42. 下列( )的调用方式是引用调用。 A. 形参和实参都是变

温馨提示

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

评论

0/150

提交评论