收藏 分销(赏)

面向对象程序设计基础学习提纲.doc

上传人:pc****0 文档编号:8145266 上传时间:2025-02-05 格式:DOC 页数:17 大小:80.50KB 下载积分:10 金币
下载 相关 举报
面向对象程序设计基础学习提纲.doc_第1页
第1页 / 共17页
面向对象程序设计基础学习提纲.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
《面向对象程序设计基础》学习提纲 第1章 程序设计与c++语言初步 1、c++语言程序结构 2、c++程序运行 3、面向对象程序特征 第2章 基本数据类型 1、 标识符、关键字:标识符的命名规则:以字母或下划线开始,不能包含非法字符 2、 常量和变量 整型常量(十、八、十六进制的正确写法) 实型常量(小数形式、指数形式) 字符常量(普通字符和转义字符) 字符串常量(结束标志、长度) 变量(合法变量名、数据类型、作用域、存储类型) 符号常量:#define PI 3.14 const double PI = 3.14; 3、 C++输入输出流(无格式输入输出,输入字符串) 4、 基本数据类型 (整型、实型、字符型、无值型(void)、布尔型) 5、 运算符与表达式(重点) 运算符的种类、优先级和结合性(编译器会对程序中所有表达式求值) 算术运算符及表达式:* 、 / 、 + 、- 、%(用于整数运算,可用来判断是否整除)、 ++、――(自加、自减,只能作用于变量,放在变量前面或后面的区别) 关系运算符及表达式:>、<、>=、<=、= =、!=。运算结果为1(真)或0(假) 逻辑运算符及表达式:(会使用&&和||书写逻辑表达式,判断时非0即为真,0为假) 赋值运算符及表达式:赋值运算符=和+=,左边只能是变量。 4、 类型转换:如(int);经过强制类型转换后算术表达式的求值 例题:2.3.1(p37) 练习:2-1、2-3、2-8 上机习题:2-2 第3章 基本控制结构 1、 三种基本结构:顺序结构、选择结构、循环结构 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、 递归函数及调用:由递推公式定义递归函数 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章 复合数据类型 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-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++程序中都必须包含有这样一个函数,该函数的函数名为              。 A. main           B. MAIN           C. name           D. function 2、设x和y均为bool量,则x&&y为真的条件是                。 A. 它们均为真    B. 其中一个为真    C. 它们均为假     D. 其中一个为假 3、下面的哪个保留字不能作为函数的返回类型?                。 A. void           B. int              C. new             D. long 4、假定a为一个整型数组名,则元素a[4]的字节地址为                 。 A. a+4            B. a+8             C. a+16            D. a+32 5、假定AB为一个类,则执行“AB  a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为                 。 A. 3              B. 4               C. 6               D. 9 6、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为:                 。 A.  AB  operator+(AB  & a , AB  & b)       B.  AB  operator+(AB  & a) C.  operator+(AB  a)                       D.  AB  & operator+( )   二、填空题(每小题2分,共24分) 1、C++语言中的每条基本语句以             作为结束符,每条复合语句以             作为结束符。 2、执行“cout  <<char('A'+2)<<endl;”语句后得到的输出结果为                 。 3、float 和 double 类型的大小分别为            和            。 4、关系表达式x+y>5的相反表达式为                          。 5、假定一个一维数组的定义为“char  * a[8] ;”,则该数组所含元素的个数为          ,所占存储空间的字节数为            。 6、变量分为全局和局部两种,              变量没有赋初值时,其值是不确定的。 7、假定a是一个二维数组,则a[i][j]的指针访问方式为                         。 8、假定一个结构类型定义为 “struct  D { int  a ;  union { int  b ; double  c ; } ; D  * d[2] ; } ;” , 则该类型的大小为              字节。 9、对一个类中的数据成员的初始化可以通过构造函数中的                  实现,也可以通过构造函数中的                    实现。 10、假定AB为一个类,则执行“AB  a[10];”语句时,系统自动调用该类的构造函数的次数为                       。  11、假定类AB中有一个公用属性的静态数据成员bb,在类外不通过对象名访问该成员bb的写法为                                    。   三、给出下列程序运行后的输出结果(每小题6分,共36分) 1、# include <iostream.h> void SB(char ch) {     switch(ch){     case 'A': case 'a':            cout <<"well!"; break;     case 'B': case 'b':            cout <<"good!"; break;     case 'C': case 'c':            cout <<"pass!"; break;     default:            cout <<"nad!"; break;     } } void main() {     char a1='b',a2='C',a3='f';     SB(a1);SB(a2);SB(a3);SB('A');     cout <<endl; }   2、# include <iostream.h> # include <string.h>   void main() {     char *a[5]={"student","worker","cadre","soldier","peasant"};     char *p1,*p2;     p1=p2=a[0];     for (int i=0; i<5; i++) {            if (strcmp(a[i],p1)>0) p1=a[i];            if (strcmp(a[i],p2)<0) p2=a[i];     }     cout <<p1<<' '<<p2<<endl; }   3、# include <iostream.h> int a=5; void main() {     int a=10,b=20;     cout <<a<<' '<<b<<endl;     {   int a=0,b=0;         for (int i=1; i<6; i++) {            a+=i; b+=a;     }            cout <<a<<' '<<b<<' '<<::a<<endl;     }     cout <<a<<' '<<b<<endl; }   4、# include <iomanip.h> int LB(int *a,int n) {     int s=1;     for (int i=0; i<n; i++)            s*=*a++;     return s; } void main() {     int a[]={1,2,3,4,5,6,7,8};     int b=LB(a,5)+LB(&a[3],3);     cout <<"b="<<b<<endl; }   5、# include <iostream.h> # include <string.h> struct Worker{     char name[15];   // 姓名     int age;         // 年龄     float pay;       // 工资 }; void main() {     Worker x;     char *t="liouting";     int d=38; float f=493;     strcpy(x.name,t);     x.age=d; x.pay=f;     cout <<x.name<<' '<<x.age<<' '<<x.pay<<endl; }   6、# include <iostream.h> class A {     int a; public:     A(int aa=0) { a=aa; }     ~A() { cout <<"Destructor A!"<<a<<endl;  } }; class B:public A {     int b; public:     B(int aa=0,int bb=0):A(aa) { b=bb; }     ~B() { cout <<"Destructor B!"<<b<<endl; } }; void main() {     B x(5),y(6,7);  // 后定义的变量将先被释放 }   四、写出下列每个函数的功能(每小题6分,共24分) 1、# include <iostream.h> int SA(int a,int b) {     if (a>b) return 1;     else if (a==b) return 0;     else return -1; }   2、float FI(int n) {     // n为大于等于1的整数     float x,y=0;     do {            cin >>x;            n--; y+=x*x;     } while (n>0);     return  y; }   3、template <class Type> void WE(Type a[],Type b[],int n) {     for (int i=0; i<n; i++)            b[n-i-1]=a[i]; }   4、struct StrNode {     char name[15];     // 字符串域     StrNode * next;    // 指针域 }; void QB(StrNode * & f ,int n) {     if (n==0) { f=NULL; return; }     f=new StrNode;     cin >>f->name;     StrNode * p=f;     while (--n) {            p=p->next=new StrNode;            cin >>p->name;     }     p->next=NULL; }   五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(10分) 一、单选题(每小题1分,共6分) 评分标准:选对者得1分,否则不得分。 1、A       2、A        3、C        4、C       5、B       6、B 二、填空题(每小题2分,共24分) 评分标准:每题与参考答案相同者得2分,否则不得分。 1、   :    }                        2、   C 3、   4     8                       4、   x+y<=5             5、   8      32 6、   局部                         7、  *(a[i]+j)   或  *(*(a+i)+j) 8、   20                         9、  初始化表    函数体 10、  10                            11、  AB::bb 三、给出下列程序运行后的输出结果(每小题6分,共36分) 评分标准:每题与参考答案的数据和显示格式完全相同者得6分,否则酌情给分。 1、  good!  pass!  bad!  well! 2、  worker  cadre 3、  10  20 15  35  5 10  20 4、  b=240 5、  liouting  38  493 6、  Destructor  B!  7 Destructor  A!  6 Destructor  B!  0 Destructor  A!  5 四、写出下列每个函数的功能(每小题6分,共24分)     评分标准:每题与参考答案的叙述含义相同者得6分,否则酌情给分。     1、比较两个整数a和b的大小,若a>b则返回1,若a= =b则返回0,若a<b则返回-1。     2、求出从键盘上输入的n个常数的平方和并返回。     3、模板函数,把数组a的每个元素按逆序放入数组b中。     4、建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。 五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:xxk1.dat”中。(10分)      评分标准:见参考程序中的注释。   # include <iostream.h>   // 使用此命令得1分 # include <fstream.h> # include <stdlib.h>   void main() {        ofstream fout("a:xxk1.dat");  // 定义输出文件流并打开文件得2分        if (!fout){               cerr <<"文件没有打开!"<<endl;               exit(1);        }        // 可有可无        int x;        cin >>x;        while (x!=-1) {               fout <<x<<' ';               cin >>x;        }    // 能够从键盘向文件正确输出数据得6分        fout.close();   // 关闭输出文件流得1分 } 复习题二及参考答案 一、 填空题 1.C++源程序文件的缺省扩展名为________。 2.程序的三种基本控制结构是:顺序结构、 结构、___________结构。 3.在C++程序中,当函数调用在前、函数定义在后时,则应在主调函数中,在调用前增加对被调函数的___________说明。 4.在调用具有数组参数的函数时,须以 作为实在参数。 5.函数递归调用指的是,在函数定义的函数体中又出现直接或间接地调用 。 6.C++依据调用中实在参数在 上或 上的不同来确定调用的是重载函数的哪一个。 7. 在函数外定义的变量称为 变量。 8. 字符串常量是用 括起来的字符序列,在字符串的末尾有一个结束标志 。 9. 当撤消一个含有基类和类对象成员的派生类对象时,将首先完成____________的析构函数定义体的执行,接着完成________________的析构函数定义体的执行,最后完成____________的析构函数定义体的执行。 10. 设px是指向一个类动态对象的指针变量,则执行”delete px;”语句时,将自动调用该类的____________。(2分) 11.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为________。(2分) 12.假定a为一个整型数组名,则元素a[4]的字节地址为_______。(2分) 13.假定一个结构类型的定义为 “struct D{int a; union {int b; double c;};D* d[2];};”,则该类型的大小为________字节。(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:计算表达式!(a>b)|| x>y的值 3.设a=1,b=-2,c=1:计算表达式 x=(d=b*b-4*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)&&(x<y)的值 5. int a=1,&b=a,*p=&a,y :计算表达式 y=(a+=b,b+=*p,*p+a) 的值 6. 设:int a[5]={10,20,30,40,50}; int *p=&a[0]; 计算表达式++*p+*(a+3)的值。 三、读程序, 并将运行结果写在对应输出语句的后面 1.#include<iostream.h> void main() { int a[6]={0,1,2,3,4,5}; int i=0; for(i=0;i<6;i++) { if(i%2==0) a[i]=a[i]+1; else a[i]=a[i]+2; cout<< a[i]; } } 2.#include<iostream.h> void f(int &a,int &b) { int t=a; a=b; b=t; } void main() { int x=10,y=15; f(x,y); cout<<x<<’\t’<<y<<’\n’; } 3.#include<iostream.h> void main() { int i=10; switch (i) { case 9:i++; case 10:++i; case 11:i++; default:i=i+1; } cout<<i<<endl; } 4. #include<iostream.h> #include<string.h> struct Worker { char name[15]; //姓名 int age; //年龄 float pay; //工资 }; void main() { Worker x; char *t="WeiRong"; int d=45; float f=1235; strcpy(x.name,t); x.age=d; x.pay=f; cout<<x.name<<' '<<x.age<<' '<<x.pay<<endl; } 四、编程题 1.设计一程序,它输入10个整数到一个数组中,调整这10个整数在数组中的排列位置,使得其中最大的一个数成为数组的首元素,最小的一个数成为数组的末元素。 2.用递归方法设计函数int arraymin(int d[],int size);其中d 为数组,size为数组元素个数;arraymin返回d中的最小元素。 3.定义描述圆柱体的结构体类型Cylinder,该结构体类型的数据成员为圆柱体底半径r与高h。编写函数Volume()计算出圆柱体的体积。在主函数中定义圆柱结构体变量,输入圆柱体的半径与高,调用Volume()函数计算出圆柱体体积,并输出圆柱体的体积。 参考答案 一、填空题 1. cpp 2. 条件分支 循环 3. 原形 4. 单独的数组名 5.自身 6. 数量 类型 7. 全局 8. 双引号 ‘\0’ 9. 派生类 类成员所属类 基类 10. 析构函数 11. 25 12. a+16 13. 20 14. Worker* r=new Worker[n]; 二、写出下列表达式的值及运算过程 1.5.5 2. 0 3. 1 4.0 5. 8 6. 51 三、读程序, 并将运行结果写在对应输出语句的后面 1.1 3 3 5 5 7 2.15 10 3.13 4.weirong 45 1235 四、编程题 1.#include<iostream.h> void main() { int data[10],m; for(m=0;m<10;m++) cin>>data[m]; int j=0,k=0; for(int i=1;i<10;i++) if(data[i]>data[j]) j=i; else if(data[i]<data[k]) k=i; if(j>0){ int d=data[0]; data[0]=data[j]; data[j]=d; if(k==0) k=j; } if(k<9){ int d=data[9]; data[9]=data[k]; data[k]=d; } cout<<endl<<”排序后:”; for(m=0;m<10;m++) cout<<data[m]<<’ ‘; } 2.int arraymin(int d[],int size) { int min; if(size==1)return d[0]; else if(d[0]>d[size-1]) d[0]=d[size-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. 编辑、编译、连接、运行 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++语言用户标识符的一组标识符是( )。 A. void define +WORD B. a3_b3 _123 YN C. for -abc Case D. 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 均被定义成整型,所赋的值都大于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;”,则”cout<<(a,b);”的输出结果是( )。 A. 15 B. 26,15 C. 15,26 D. 26 15. 设x是一个bool型的逻辑量,y的值为10,则表达式 x && y的值为( )。 A. 1 B. 0 C. 与x值相同 D. 与x值相反 16. x>0 && x<=10的相反表达式为( )。 A. x<=0 || x>10 B. x<=0 && x>10 C. x<=0 || x<=10 D. x>0 && x>10 17. x>0 || y==5的相反表达式为( )。 A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5 18.设x和y均为bool量,则x && y为真的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 19.设x和y均为bool量,则x || y为假的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 20. 字符串”a+b=12\n”的长度为( )。 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<n; i++) cout<<i*i<<’ ’;”中循环体执行的次数为( )。 A. 1 B. n-1 C. n D. n+1 24. 在下面循环语句中循环体执行的次数为( )。 for(int i=0; i<n; i++) if(i>n/2) break; A. n/2 B. n/2+1 C. n/2-1 D. n-1 25. 在下面循环语句中内层循环体S语句的执行总次数为( )。 for(int i=0; i<n; i++) for(int j=i; j<n; j++) S; A. n2 B. (n+1)/2 C. n(n-1)/2 D. n(n+1)/2 26. 在下面循环语句中循环体执行的次数为( )。 int i=0,s=0; while(s<20) {i++; s+=i;} A. 4 B. 5 C. 6 D. 7 27. 在下面循环语句中循环体执行的次数为( )。 int i=0; do i++; while(i*i<10); 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 31. do语句能够改写为( )语句。 A. 复合 B. if C. switch D. while 32. 在下面的一维数组定义中,哪一个有语法错误。( ) A. int a[]={1,2,3}; B. int a[10]={0}; C. int a[]; D. int a[5]; 33. 在下面的字符数组定义中,哪一个有语法错误。( )。 A. char a[20]=”abcdefg”; B. char a[]=”x+y=55.”; C. char a[15]; D. char a[10]=’5’; 34. 在下面的二维数组定义中,正确的是( )。 A.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 管理财经 > 管理学资料

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服