河北科技大学 面向对象程序设计基础学习提纲.docx

上传人:b****2 文档编号:13920525 上传时间:2023-06-19 格式:DOCX 页数:26 大小:27.76KB
下载 相关 举报
河北科技大学 面向对象程序设计基础学习提纲.docx_第1页
第1页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第2页
第2页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第3页
第3页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第4页
第4页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第5页
第5页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第6页
第6页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第7页
第7页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第8页
第8页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第9页
第9页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第10页
第10页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第11页
第11页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第12页
第12页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第13页
第13页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第14页
第14页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第15页
第15页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第16页
第16页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第17页
第17页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第18页
第18页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第19页
第19页 / 共26页
河北科技大学 面向对象程序设计基础学习提纲.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

河北科技大学 面向对象程序设计基础学习提纲.docx

《河北科技大学 面向对象程序设计基础学习提纲.docx》由会员分享,可在线阅读,更多相关《河北科技大学 面向对象程序设计基础学习提纲.docx(26页珍藏版)》请在冰点文库上搜索。

河北科技大学 面向对象程序设计基础学习提纲.docx

河北科技大学面向对象程序设计基础学习提纲

《面向对象程序设计基础》学习提纲

第1章程序设计与c++语言初步

1、c++语言程序结构

2、c++程序运行

3、面向对象程序特征

第2章基本数据类型

1、标识符、关键字:

标识符的命名规则:

以字母或下划线开始,不能包含非法字符

2、常量和变量

整型常量(十、八、十六进制的正确写法)

实型常量(小数形式、指数形式)

字符常量(普通字符和转义字符)

字符串常量(结束标志、长度)

变量(合法变量名、数据类型、作用域、存储类型)

符号常量:

#definePI3.14

constdoublePI=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.33.2.43.2.53.2.83.3.43.3.6

练习:

3-2,3-4,3-6

上机习题:

3-3

第4章函数

1、函数的有关概念:

类型、参数、返回值

2、定义函数:

确定函数的类型、形参的类型及名称、返回值及一致性、定义位置等。

3、函数调用:

确定实参及类型、调用方式与方法、参数传递方式(传值调用、传址调用)。

4、递归函数及调用:

由递推公式定义递归函数

5、变量的作用域及存储类型:

全局、局部变量的定义及其作用域,局部变量的三种存储类型:

自动存储、静态存储、寄存器存储,静态局部变量的初始值及在函数经过多次调用后的值。

6、递归程序设计

7、预处理命令:

宏定义

8、库函数

例题:

4.2.24.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.16.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  <

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 

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 <

}

 

2、# include 

# include 

 

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 <

}

 

3、# include 

int a=5;

void main() {

    int a=10,b=20;

    cout <

    {   int a=0,b=0;

        for (int i=1; i<6; i++) {

           a+=i; b+=a;

    }

           cout <

:

a<

    }

    cout <

}

 

4、# include 

int LB(int *a,int n) {

    int s=1;

    for (int i=0; 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="<

}

 

5、# include 

# include 

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 <

}

 

6、# include 

class A {

    int a;

public:

    A(int aa=0) { a=aa; }

    ~A() { cout <<"Destructor A!

"<

};

class B:

public A {

    int b;

public:

    B(int aa=0,int bb=0):

A(aa) { b=bb; }

    ~B() { cout <<"Destructor B!

"<

};

void main() {

    B x(5),y(6,7);  // 后定义的变量将先被释放

}

 

四、写出下列每个函数的功能(每小题6分,共24分)

1、# include 

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 

void WE(Type a[],Type b[],int n) {

    for (int i=0; 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

    2、求出从键盘上输入的n个常数的平方和并返回。

    3、模板函数,把数组a的每个元素按逆序放入数组b中。

    4、建立一个具有n个结点的链表,每个结点的字符串值由键盘输入,链表的表头指针由引用变量f带回。

五、编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a:

xxk1.dat”中。

(10分)

 

   评分标准:

见参考程序中的注释。

 

# include    // 使用此命令得1分

# include 

# include 

 

void main() {

       ofstream fout("a:

xxk1.dat");  // 定义输出文件流并打开文件得2分

       if (!

fout){

              cerr <<"文件没有打开!

"<

              exit

(1);

       }        // 可有可无

       int x;

       cin >>x;

       while (x!

=-1) {

              fout <

              cin >>x;

       }    // 能够从键盘向文件正确输出数据得6分

       fout.close();   // 关闭输出文件流得1分

}

复习题二及参考答案

一、填空题

1.C++源程序文件的缺省扩展名为________。

2.程序的三种基本控制结构是:

顺序结构、结构、___________结构。

3.在C++程序中,当函数调用在前、函数定义在后时,则应在主调函数中,在调用前增加对被调函数的___________说明。

4.在调用具有数组参数的函数时,须以作为实在参数。

5.函数递归调用指的是,在函数定义的函数体中又出现直接或间接地调用。

6.C++依据调用中实在参数在上或上的不同来确定调用的是重载函数的哪一个。

7.在函数外定义的变量称为变量。

8.字符串常量是用括起来的字符序列,在字符串的末尾有一个结束标志。

9.当撤消一个含有基类和类对象成员的派生类对象时,将首先完成____________的析构函数定义体的执行,接着完成________________的析构函数定义体的执行,最后完成____________的析构函数定义体的执行。

10.设px是指向一个类动态对象的指针变量,则执行”deletepx;”语句时,将自动调用该类的____________。

(2分)

11.假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为________。

(2分)

12.假定a为一个整型数组名,则元素a[4]的字节地址为_______。

(2分)

13.假定一个结构类型的定义为“structD{inta;union{intb;doublec;};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.设有变量说明inta=4,b=2,x=3,y=0:

计算表达式(--a<++b)&&(x

5.inta=1,&b=a,*p=&a,y:

计算表达式y=(a+=b,b+=*p,*p+a)的值

6.设:

inta[5]={10,20,30,40,50};int*p=&a[0];计算表达式++*p+*(a+3)的值。

三、读程序,并将运行结果写在对应输出语句的后面

1.#include

voidmain()

{inta[6]={0,1,2,3,4,5};

inti=0;

for(i=0;i<6;i++)

{

if(i%2==0)a[i]=a[i]+1;

elsea[i]=a[i]+2;

cout<

}

}

2.#include

voidf(int&a,int&b)

{

intt=a;a=b;b=t;

}

voidmain()

{

intx=10,y=15;

f(x,y);

cout<

}

3.#include

voidmain()

{inti=10;

switch(i)

{case9:

i++;

case10:

++i;

case11:

i++;

default:

i=i+1;

}

cout<

}

4.#include

#include

structWorker{

charname[15];//姓名

intage;//年龄

floatpay;//工资

};

voidmain(){

Workerx;

char*t="WeiRong";

intd=45;floatf=1235;

strcpy(x.name,t);

x.age=d;x.pay=f;

cout<

}

四、编程题

1.设计一程序,它输入10个整数到一个数组中,调整这10个整数在数组中的排列位置,使得其中最大的一个数成为数组的首元素,最小的一个数成为数组的末元素。

2.用递归方法设计函数intarraymin(intd[],intsize);其中d 为数组,size为数组元素个数;arraymin返回d中的最小元素。

3.定义描述圆柱体的结构体类型Cylinder,该结构体类型的数据成员为圆柱体底半径r与高h。

编写函数Volume()计算出圆柱体的体积。

在主

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2