2011上海专升本C++考试大纲

《C++程序设计》考试大纲

一、基本要求

1. 掌握C++语言的基本语法规则。

2.掌握程序设计的三种基本结构。

3.掌握函数、指针和结构体的基本知识及相关应用。

4.熟练掌握有关类与对象的相关知识。

5.能够采用面向过程和面向对象的编程思路和方法编写应用程序。

6. 能熟练使用Visual C++6.0集成开发环境编写和调度程序。

涉及主要内容:

C++语言与面向对象概述、基本数据类型及表达式、C++与结构化程序设计、数组、函数与预处理、指针、构造数据类型、类与对象、继承与派生、多态性、I/O 流与文件、模板与异常处理等。

二、考试内容

第1 章 C++语言与面向对象概述

1. 理解和掌握C++程序的基本结构、C++的基本词法和规范;

2. 了解面向对象技术的基本概念;

3. 初步掌握Visual C++集成开发系统的步骤和方法;

第2 章 基本数据类型及表达式

1. 掌握简单的输入/输出;

2. 掌握基本数据类型的应用;

3. 掌握常量和变量的定义与应用;

4. 掌握运算符与表达式的应用;

5. 了解运算符的优先级;

6. 了解数据类型转换。

第3 章 C++与结构化程序设计

1. 掌握结构化程序设计方法;

2. 掌握各种选择语句的使用;

3. 掌握各种循环语句的使用;

4. 掌握各种转向语句的使用;

5. 学会综合运用结构控制语句进行简单的编程

第4 章 数 组

1. 掌握定义一维数组和二维数组的方法以及设定初值的方法;

2. 掌握数组和循环配合的程序设计方法;

3. 掌握数组操作的基本技巧并能解决实际问题;

4. 掌握数组的一个典型应用——字符串处理,熟悉常用的字符串处理函数;

5. 了解数组的概念;

6. 了解数组元素的存放方式。

第5 章 函数与预处理

1. 掌握函数的定义格式和函数的原型声明方法;

2. 掌握函数的调用方法以及形式参数和实际参数之间的关系;

3. 掌握函数的嵌套和递归调用使用方法;

4. 掌握内联函数和函数重载的使用方法;

5. 了解函数的作用域与生命期;

6. 了解编译预处理的基本原理和使用方法。

第6 章 指 针

1. 掌握指针变量的定义格式及引用方法;

2. 掌握指针变量的简单运算;

3. 掌握用new 与delete 运算符动态分配与回收内存空间的方法;

4. 掌握用指针变量处理一维数组与字符串数组的问题;

5. 掌握用指针变量、数组作为函数参数时函数的使用方法;

6. 了解指向函数的指针和指向指针的指针的使用方法。

第7 章 构造数据类型

1. 掌握结构型的定义、结构型变量的定义和使用;

2. 掌握共用型的定义、共用型变量的定义和使用;

3. 掌握枚举型的定义、枚举型变量的定义和使用;

4. 理解typedef 作用,了解typedef 的使用方法;

5. 能综合运用上述方法和技术进行较复杂的程序设计

第8 章 类 与 对 象

1. 掌握类和对象的定义方法;

2. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别;

3. 掌握构造函数和析构函数的含义与作用、定义方式和实现;

4. 理解静态成员的特性;

5. 掌握内联函数和重载函数在类设计上的应用;

6. 掌握友元函数和友元类的含义和特点;

7. 了解嵌套类的定义方式,掌握子对象的初始化方法;

8. 理解对象指针和对象数组的定义和使用方法;

9. 掌握常类型函数参数的使用要领;

10. 掌握常对象、常成员的定义、使用方法

第9 章 继承与派生

1. 掌握派生和继承的相关概念和使用方法;

2. 掌握在继承中构造函数的设计方法和调用顺序;

3. 掌握在继承中析构函数的设计方法和调用顺序;

4. 掌握虚基类的相关概念和使用方法;

5. 掌握运用类的继承和派生的相关知识进行综合程序设计

第10 章 多 态 性

1. 理解静态联编和动态联编的概念;

2. 掌握运算符重载的实现方法;

3. 了解虚拟函数和动态联编对实现动态多态的作用;

4. 理解纯虚拟函数和抽象类的概念和实现方法;

5. 了解虚拟析构函数的概念和作用,掌握其声明和使用方法;

6. 理解动态联编的实现机理,学会使用动态多态特性解决实际问题

第11 章 I/O 流与文件

1. 理解如何使用C++面向对象和输入/输出流;

2. 使用定义在中的格式化标志对输入/输出进行格式化;

3. 理解如何输入/输出流的类层次;

4. 理解如何输入/输出自定义类型的对象;

5. 创建程序员定义的流操作程序;

6. 掌握文件流的使用,了解字符串流的使用。

第12 章 模板与异常处理

1. 能够设计和使用模板;

2. 能够使用继承的模板;

3. 理解容器与迭代器;

4. 理解异常处理的重要性以及使用异常处理;

5. 使用不同的C++异常处理技术;

6. 能够处理不可预见的异常;

7. 熟悉标准异常处理函数。

三、考试方式

笔试:120分钟,满分150分。

四、附考试样题:

《C++程序设计》 笔试试卷

一、选择题(25%)

1. 以下C++标识符,哪个是正确的( )。

A. void B. _text_1 C. 3_name D. 2a-one

2. 下列哪个是C++源文件的扩展名( )。

A. .h B. .dsw C. .cpp D. .dsp

3. sizeof(double)的结果是( )。

A. 8 B. 4 C. 2 D. 出错

4. 字符串“\\\”ABC\“\\”的长度是( )。

A. 3 B. 5 C. 7 D. 9

5. 设整型变量i 为5,使整型变量k 不为2 的表达式是( )。

A. k=i%2 B. k=i/2 C. k=6-(--i) D. k=i>3?2:1

6. 下面for 语句的循环次数为( )。

for(int i=0,x=0; !x && i

A. 0 B. 5 C. 6 D. 7

7. 下列语句中,不正确的是( )。

A. static int a[2][3]={1,2,3,4,5,6}; B. static int a[2][3]={{1},{4,5}};

C. static int a[][3]={{1},{4}}; D. static int a[][]={{1,2,3},{4,5,6}};

8. 设有如下形式的字符数组定义:

static char str[]="Beijing";

则执行下列语句后的输出结果为( )。

cout

A. 7 B. 5 C. 8 D. 9

9. 在C++程序中,直接或间接调用自己的函数称为( )。

A. 递归函数 B. 内联函数

C. 重载函数 D. 成员函数

10. 在下列语句中,将函数int find(int x, int y)正确重载的是( )。

A. float find(int x, int y) B. int find(int a, int b)

C. int find(int x) D. float find(int x, int y)

11. 下面的函数声明语句中,最正确的是( )。

A. int max(x,y); B. max(int,int);

C. void max(int ,int) D. int max( int x, int y);

12. 在int a=5,*p=&a; 语句中,*p 的值是( )。

A. 变量a 的地址 B. 无意义

C. 变量p 的地址值 D. 5

13. 若有:

int func(int *p)

{

... ...

}

void main()

{

int (*q)(int *)=func;

int *f(),k[10],a;

... ...

}

在必要的赋值后,对func 函数的正确调用语句是( )。

A. q=q(k); B. (*q)(&a);

C. f=*f(k); D. func(f);

14. 若有如下定义,则下列对成员变量a 的访问,哪种是不合法的( )。

struct AA{

int a,b;

}st,*p=&st;

A. (*p).a B. *p.a C. p->a D. st.a

15. 有关类和对象的说法不正确的是( )。

A. 对象是类的实例

B. 一个类只有一个对象

C. 任何一个对象只能属于一个类

D. 类与对象的关系和数据与变量的关系相似

E. 类是抽象的,对象是具体的

16. 有关构造函数的说法不正确的是( )。

A. 构造函数名和类名相同

B. 构造函数可被程序显式调用

C. 构造函数可有返回类型

D. 构造函数可有多个

E. 构造函数都是由系统自动调用的

17. 关于静态数据成员,下列说法错误的是( )。

A. 静态数据必须初始化

B. 静态数据的初始化是在构造函数中进行的

C. 说明静态数据成员时前面要加static

D. 引用静态数据成员时,要在静态数据成员名前加和作用域运算符

18. 在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的 规则( )。

A. 完全相同 B. 完全不同

C. 部分相同,部分不同 D. 以上都不对

19. 关于多继承二义性的描述,以下( )是错误的。

A. 一个派生类中的两个基类中都有某个同名成员,在派生类中对这个成员的访问 可能出现二义性

B. 解决二义性最常用的方法是对成员名的限定

C. 基类和派生类中出现同名函数,也存在二义性问题

D. 一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该 基类成员进行访问时,也可能出现二义性

20. 下列属于动态多态的是( )。

A. 函数重载 B. 运算符重载 C. 虚函数 D.构造函数重载

4. 重载运算符的实质是函数调用,如果重载了后置单目运算符“++”,执行C++,则 相当于执行了哪个函数( )。

A. c.operator++(c,0); B. c.operator++();

C. operator++(c); D. operator++(c,0);

21. 当使用ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式 是( )。

A. ios::in B. ios::out C. ios::trunk D. ios::binary

22. 进行文件操作时包含( )文件。

A. iostream.h B. fstream.h C. stdio.h D. stdlib.h

23. 磁盘文件操作中,打开磁盘文件的访问模式常量时,( )是以追加方式打开文件的。

A. in B. out C. app D. ate

24. 关于函数模板,下面描述错误的是( )。

A. 函数模板必须由程序员实例化为可执行的函数模板

B. 函数模板的实例化由编译器实现

C. 一个类定义中,要有一个函数模板,则这个类是类模板

D. 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

25. 下列对模板的说明中,正确的是( )。

A. template

B. template

C. template

D. template

二、填空题(25%)

1. 面向对象方法的主要特点是将___________和___________封装在一起。

2. 面向对象中的抽象分为___________抽象和___________抽象,其封装是通过定义 ___________来实现的

3. 在C++语言中,字符串常量"I love visual C++ 6.0.\n"的长度是___________。

4. 已知数组e 定义为int e[ ][4]={{1,2,3,4},{5,6,7,8}};则e 是一个_________行_________ 列的二维数组,总共有___________个元素,最大行下标是___________,最大列下标是 ___________,其首行的各元素的值分别是___________。

5. 执行下列语句序列后,数组str2 中的字符串是___________

char str1[ ]="ABCD",str2[10]="XYZxyz";

for(int i=0;str2[i]=str1[i];i++);

6. 在C++中每条预处理指令都必须以__________开头;可以用预处理指令__________ 终止符号常量和宏的作用;每一条#if 结构都用__________结束。

7. 若有int a[6],*p=a;,则数组元素a[3]可以表示为*(p+__________ ) 或p[_________]。

8. 有如下结构体的定义:

struct AA{

int *a,b;

char c;

};

则sizeof(AA)的值是___________。

9.若类Sample 中只有如下几个数据成员:const float f,const char c,则其构造函数应 定义为_________________________________

10. 如果派生类中没有给出纯虚函数的具体实现,这个派生类仍然是一个___________。

11. 下面的程序向C 盘的new 文件写入内容,然后把该内容显示出来,试完成该程序。 #include

void main()

{

char str[100];

fstream f;

___________ ;

f

f.put('\n');

f.seekg(0);

while(________ )

{ f.getline(str,100); cout

___________ ;

}

12. 异常处理中,如果没有匹配所抛出的对象类型的catch 语句块,这时系统调用默认 ___________终止程序。

三、程序阅读(12%,每题3分)

1. 假定输入的5 个整数为19,29,39,49,59,写出下列程序的运行结果。 #include

void main()

{

int a,b,c,x;

a=b=c=0;

for(int i=0;i

{

cin>>x;

switch(x%3)

{

case 0:a+=x;break;

case 1:b+=x;break;

case 2:c+=x;break;

}

}

cout

}

2. 阅读程序,说明其功能及输出的结果。

#include

void main()

{

int k;

char x,a[10]={'a','b','c','d','e','f','g','h','i','j'};

for(k=0;k

{

x=a[k];

a[k]=a[9-k];

a[9-k]=x;

}

for(k=0;k

cout

cout

}

3. 阅读下面的程序,写出输出结果。

#include

void func1(int x,int y,int *sum)

{

*sum=x+y;

++x,++y;

}

void func2(int x,int y,int *product)

{

*product=x*y;

x+=y;

y-=x;

}

void main()

{

int x=10,y=20,z=50;

void (*p)(int,int,int *);

p=func1;

(*p)(x,y,&z);

cout

p=func2;

(*p)(x,y,&z);

cout

}

4. 分析下面程序的结果。

#include

class A

{

public:

A() { cout

A(int i) { x1=i;cout

private:

int x1;

};

class B: public A

{

public:

B() { cout

B(int i):A(i+10) { x2=i;cout

{

dispa();

cout

}

private:

int x2;

};

void main()

{

B b(2);

b.dispb();

}

四.改正错误(每题有几处错误,在错误处画线,并写出正确语句。)(每题 3分,共9分)

1.将一维数组按升序排列。

#include

void sort ( int p,int n)

{ int i,j,temp;

for (i=1;i

for (j=1;j

if (p[i]

{ temp=p[i];p[i]=p[j];p[j]=temp; }

}

void main( void)

{ int a1[6]={1,3,2,5,4,6},*pi,i;

pi=a1[0];

sort (pi,6);

for (i=0;i

cout

}

2. #include

class one{

int a1,a2;

public:

void initial(int x1,int x2)

{

a1=x1;

a2=x2;

}

};

void main()

{

one data(2,3);

cout

cout

}

3.#include

#include

class Tpoint{

double x,y;

Tpoint(double a,double b)

{

x=a;y=b;

}

friend double distance(Tpoint a,Tpoint b);

};

double Tpoint::distance(Tpoint a,Tpoint b)

{

}

void main() double dist; dist=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); return dist;

{

Tpoint p1(2,2),p2(5,5);

cout

getch();

}

五.程序填空(每空1.5分,共12分)

1.有一个一维数组,存放10个数据,用一个函数求出最大值和最小值,并在主函数中输入与输出。

#include

void max_min(int a[],int *max,int *min);

void main( )

{

}

void max_min(int a[],int *max,int *min)

{*max=*min=a[0];

int i;

for (i=1;i

{

if (*max>array[i];

}

} if (*min>a[i])

2.下列程序将结构体变量tt中的内容写入D盘上的date.txt文件。

#include

#include

struct date

{int year,month,day;};

void main()

{ date tt={2002,2,12};

ofstream ;

outdate.open("d:\\date.txt",ios::binary);

if ( )

{ cerr

exit (-1) ; }

outdate.write( ,sizeof(tt));

;

}

六、编程题(17%)

1. 编写一个程序,输出13~100 之间的全部素数。要求每排10 个素数,素数之间以 空格分隔。(7%)

2. 设计一个教师类,并编写程序进行测试。教师类的属性有:编号、性别、职称、部门等,其中,部门要求是一个“部门”类的内嵌子对象,部门类要求有编号、名称、负责人等。要求用成员函数实现教师信息的录入和显示。要求设计出的类包含构造函数、内联成员函数、带默认值的成员函数等。(10%)

《C++程序设计》考试大纲

一、基本要求

1. 掌握C++语言的基本语法规则。

2.掌握程序设计的三种基本结构。

3.掌握函数、指针和结构体的基本知识及相关应用。

4.熟练掌握有关类与对象的相关知识。

5.能够采用面向过程和面向对象的编程思路和方法编写应用程序。

6. 能熟练使用Visual C++6.0集成开发环境编写和调度程序。

涉及主要内容:

C++语言与面向对象概述、基本数据类型及表达式、C++与结构化程序设计、数组、函数与预处理、指针、构造数据类型、类与对象、继承与派生、多态性、I/O 流与文件、模板与异常处理等。

二、考试内容

第1 章 C++语言与面向对象概述

1. 理解和掌握C++程序的基本结构、C++的基本词法和规范;

2. 了解面向对象技术的基本概念;

3. 初步掌握Visual C++集成开发系统的步骤和方法;

第2 章 基本数据类型及表达式

1. 掌握简单的输入/输出;

2. 掌握基本数据类型的应用;

3. 掌握常量和变量的定义与应用;

4. 掌握运算符与表达式的应用;

5. 了解运算符的优先级;

6. 了解数据类型转换。

第3 章 C++与结构化程序设计

1. 掌握结构化程序设计方法;

2. 掌握各种选择语句的使用;

3. 掌握各种循环语句的使用;

4. 掌握各种转向语句的使用;

5. 学会综合运用结构控制语句进行简单的编程

第4 章 数 组

1. 掌握定义一维数组和二维数组的方法以及设定初值的方法;

2. 掌握数组和循环配合的程序设计方法;

3. 掌握数组操作的基本技巧并能解决实际问题;

4. 掌握数组的一个典型应用——字符串处理,熟悉常用的字符串处理函数;

5. 了解数组的概念;

6. 了解数组元素的存放方式。

第5 章 函数与预处理

1. 掌握函数的定义格式和函数的原型声明方法;

2. 掌握函数的调用方法以及形式参数和实际参数之间的关系;

3. 掌握函数的嵌套和递归调用使用方法;

4. 掌握内联函数和函数重载的使用方法;

5. 了解函数的作用域与生命期;

6. 了解编译预处理的基本原理和使用方法。

第6 章 指 针

1. 掌握指针变量的定义格式及引用方法;

2. 掌握指针变量的简单运算;

3. 掌握用new 与delete 运算符动态分配与回收内存空间的方法;

4. 掌握用指针变量处理一维数组与字符串数组的问题;

5. 掌握用指针变量、数组作为函数参数时函数的使用方法;

6. 了解指向函数的指针和指向指针的指针的使用方法。

第7 章 构造数据类型

1. 掌握结构型的定义、结构型变量的定义和使用;

2. 掌握共用型的定义、共用型变量的定义和使用;

3. 掌握枚举型的定义、枚举型变量的定义和使用;

4. 理解typedef 作用,了解typedef 的使用方法;

5. 能综合运用上述方法和技术进行较复杂的程序设计

第8 章 类 与 对 象

1. 掌握类和对象的定义方法;

2. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别;

3. 掌握构造函数和析构函数的含义与作用、定义方式和实现;

4. 理解静态成员的特性;

5. 掌握内联函数和重载函数在类设计上的应用;

6. 掌握友元函数和友元类的含义和特点;

7. 了解嵌套类的定义方式,掌握子对象的初始化方法;

8. 理解对象指针和对象数组的定义和使用方法;

9. 掌握常类型函数参数的使用要领;

10. 掌握常对象、常成员的定义、使用方法

第9 章 继承与派生

1. 掌握派生和继承的相关概念和使用方法;

2. 掌握在继承中构造函数的设计方法和调用顺序;

3. 掌握在继承中析构函数的设计方法和调用顺序;

4. 掌握虚基类的相关概念和使用方法;

5. 掌握运用类的继承和派生的相关知识进行综合程序设计

第10 章 多 态 性

1. 理解静态联编和动态联编的概念;

2. 掌握运算符重载的实现方法;

3. 了解虚拟函数和动态联编对实现动态多态的作用;

4. 理解纯虚拟函数和抽象类的概念和实现方法;

5. 了解虚拟析构函数的概念和作用,掌握其声明和使用方法;

6. 理解动态联编的实现机理,学会使用动态多态特性解决实际问题

第11 章 I/O 流与文件

1. 理解如何使用C++面向对象和输入/输出流;

2. 使用定义在中的格式化标志对输入/输出进行格式化;

3. 理解如何输入/输出流的类层次;

4. 理解如何输入/输出自定义类型的对象;

5. 创建程序员定义的流操作程序;

6. 掌握文件流的使用,了解字符串流的使用。

第12 章 模板与异常处理

1. 能够设计和使用模板;

2. 能够使用继承的模板;

3. 理解容器与迭代器;

4. 理解异常处理的重要性以及使用异常处理;

5. 使用不同的C++异常处理技术;

6. 能够处理不可预见的异常;

7. 熟悉标准异常处理函数。

三、考试方式

笔试:120分钟,满分150分。

四、附考试样题:

《C++程序设计》 笔试试卷

一、选择题(25%)

1. 以下C++标识符,哪个是正确的( )。

A. void B. _text_1 C. 3_name D. 2a-one

2. 下列哪个是C++源文件的扩展名( )。

A. .h B. .dsw C. .cpp D. .dsp

3. sizeof(double)的结果是( )。

A. 8 B. 4 C. 2 D. 出错

4. 字符串“\\\”ABC\“\\”的长度是( )。

A. 3 B. 5 C. 7 D. 9

5. 设整型变量i 为5,使整型变量k 不为2 的表达式是( )。

A. k=i%2 B. k=i/2 C. k=6-(--i) D. k=i>3?2:1

6. 下面for 语句的循环次数为( )。

for(int i=0,x=0; !x && i

A. 0 B. 5 C. 6 D. 7

7. 下列语句中,不正确的是( )。

A. static int a[2][3]={1,2,3,4,5,6}; B. static int a[2][3]={{1},{4,5}};

C. static int a[][3]={{1},{4}}; D. static int a[][]={{1,2,3},{4,5,6}};

8. 设有如下形式的字符数组定义:

static char str[]="Beijing";

则执行下列语句后的输出结果为( )。

cout

A. 7 B. 5 C. 8 D. 9

9. 在C++程序中,直接或间接调用自己的函数称为( )。

A. 递归函数 B. 内联函数

C. 重载函数 D. 成员函数

10. 在下列语句中,将函数int find(int x, int y)正确重载的是( )。

A. float find(int x, int y) B. int find(int a, int b)

C. int find(int x) D. float find(int x, int y)

11. 下面的函数声明语句中,最正确的是( )。

A. int max(x,y); B. max(int,int);

C. void max(int ,int) D. int max( int x, int y);

12. 在int a=5,*p=&a; 语句中,*p 的值是( )。

A. 变量a 的地址 B. 无意义

C. 变量p 的地址值 D. 5

13. 若有:

int func(int *p)

{

... ...

}

void main()

{

int (*q)(int *)=func;

int *f(),k[10],a;

... ...

}

在必要的赋值后,对func 函数的正确调用语句是( )。

A. q=q(k); B. (*q)(&a);

C. f=*f(k); D. func(f);

14. 若有如下定义,则下列对成员变量a 的访问,哪种是不合法的( )。

struct AA{

int a,b;

}st,*p=&st;

A. (*p).a B. *p.a C. p->a D. st.a

15. 有关类和对象的说法不正确的是( )。

A. 对象是类的实例

B. 一个类只有一个对象

C. 任何一个对象只能属于一个类

D. 类与对象的关系和数据与变量的关系相似

E. 类是抽象的,对象是具体的

16. 有关构造函数的说法不正确的是( )。

A. 构造函数名和类名相同

B. 构造函数可被程序显式调用

C. 构造函数可有返回类型

D. 构造函数可有多个

E. 构造函数都是由系统自动调用的

17. 关于静态数据成员,下列说法错误的是( )。

A. 静态数据必须初始化

B. 静态数据的初始化是在构造函数中进行的

C. 说明静态数据成员时前面要加static

D. 引用静态数据成员时,要在静态数据成员名前加和作用域运算符

18. 在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的 规则( )。

A. 完全相同 B. 完全不同

C. 部分相同,部分不同 D. 以上都不对

19. 关于多继承二义性的描述,以下( )是错误的。

A. 一个派生类中的两个基类中都有某个同名成员,在派生类中对这个成员的访问 可能出现二义性

B. 解决二义性最常用的方法是对成员名的限定

C. 基类和派生类中出现同名函数,也存在二义性问题

D. 一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该 基类成员进行访问时,也可能出现二义性

20. 下列属于动态多态的是( )。

A. 函数重载 B. 运算符重载 C. 虚函数 D.构造函数重载

4. 重载运算符的实质是函数调用,如果重载了后置单目运算符“++”,执行C++,则 相当于执行了哪个函数( )。

A. c.operator++(c,0); B. c.operator++();

C. operator++(c); D. operator++(c,0);

21. 当使用ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式 是( )。

A. ios::in B. ios::out C. ios::trunk D. ios::binary

22. 进行文件操作时包含( )文件。

A. iostream.h B. fstream.h C. stdio.h D. stdlib.h

23. 磁盘文件操作中,打开磁盘文件的访问模式常量时,( )是以追加方式打开文件的。

A. in B. out C. app D. ate

24. 关于函数模板,下面描述错误的是( )。

A. 函数模板必须由程序员实例化为可执行的函数模板

B. 函数模板的实例化由编译器实现

C. 一个类定义中,要有一个函数模板,则这个类是类模板

D. 类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化

25. 下列对模板的说明中,正确的是( )。

A. template

B. template

C. template

D. template

二、填空题(25%)

1. 面向对象方法的主要特点是将___________和___________封装在一起。

2. 面向对象中的抽象分为___________抽象和___________抽象,其封装是通过定义 ___________来实现的

3. 在C++语言中,字符串常量"I love visual C++ 6.0.\n"的长度是___________。

4. 已知数组e 定义为int e[ ][4]={{1,2,3,4},{5,6,7,8}};则e 是一个_________行_________ 列的二维数组,总共有___________个元素,最大行下标是___________,最大列下标是 ___________,其首行的各元素的值分别是___________。

5. 执行下列语句序列后,数组str2 中的字符串是___________

char str1[ ]="ABCD",str2[10]="XYZxyz";

for(int i=0;str2[i]=str1[i];i++);

6. 在C++中每条预处理指令都必须以__________开头;可以用预处理指令__________ 终止符号常量和宏的作用;每一条#if 结构都用__________结束。

7. 若有int a[6],*p=a;,则数组元素a[3]可以表示为*(p+__________ ) 或p[_________]。

8. 有如下结构体的定义:

struct AA{

int *a,b;

char c;

};

则sizeof(AA)的值是___________。

9.若类Sample 中只有如下几个数据成员:const float f,const char c,则其构造函数应 定义为_________________________________

10. 如果派生类中没有给出纯虚函数的具体实现,这个派生类仍然是一个___________。

11. 下面的程序向C 盘的new 文件写入内容,然后把该内容显示出来,试完成该程序。 #include

void main()

{

char str[100];

fstream f;

___________ ;

f

f.put('\n');

f.seekg(0);

while(________ )

{ f.getline(str,100); cout

___________ ;

}

12. 异常处理中,如果没有匹配所抛出的对象类型的catch 语句块,这时系统调用默认 ___________终止程序。

三、程序阅读(12%,每题3分)

1. 假定输入的5 个整数为19,29,39,49,59,写出下列程序的运行结果。 #include

void main()

{

int a,b,c,x;

a=b=c=0;

for(int i=0;i

{

cin>>x;

switch(x%3)

{

case 0:a+=x;break;

case 1:b+=x;break;

case 2:c+=x;break;

}

}

cout

}

2. 阅读程序,说明其功能及输出的结果。

#include

void main()

{

int k;

char x,a[10]={'a','b','c','d','e','f','g','h','i','j'};

for(k=0;k

{

x=a[k];

a[k]=a[9-k];

a[9-k]=x;

}

for(k=0;k

cout

cout

}

3. 阅读下面的程序,写出输出结果。

#include

void func1(int x,int y,int *sum)

{

*sum=x+y;

++x,++y;

}

void func2(int x,int y,int *product)

{

*product=x*y;

x+=y;

y-=x;

}

void main()

{

int x=10,y=20,z=50;

void (*p)(int,int,int *);

p=func1;

(*p)(x,y,&z);

cout

p=func2;

(*p)(x,y,&z);

cout

}

4. 分析下面程序的结果。

#include

class A

{

public:

A() { cout

A(int i) { x1=i;cout

private:

int x1;

};

class B: public A

{

public:

B() { cout

B(int i):A(i+10) { x2=i;cout

{

dispa();

cout

}

private:

int x2;

};

void main()

{

B b(2);

b.dispb();

}

四.改正错误(每题有几处错误,在错误处画线,并写出正确语句。)(每题 3分,共9分)

1.将一维数组按升序排列。

#include

void sort ( int p,int n)

{ int i,j,temp;

for (i=1;i

for (j=1;j

if (p[i]

{ temp=p[i];p[i]=p[j];p[j]=temp; }

}

void main( void)

{ int a1[6]={1,3,2,5,4,6},*pi,i;

pi=a1[0];

sort (pi,6);

for (i=0;i

cout

}

2. #include

class one{

int a1,a2;

public:

void initial(int x1,int x2)

{

a1=x1;

a2=x2;

}

};

void main()

{

one data(2,3);

cout

cout

}

3.#include

#include

class Tpoint{

double x,y;

Tpoint(double a,double b)

{

x=a;y=b;

}

friend double distance(Tpoint a,Tpoint b);

};

double Tpoint::distance(Tpoint a,Tpoint b)

{

}

void main() double dist; dist=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); return dist;

{

Tpoint p1(2,2),p2(5,5);

cout

getch();

}

五.程序填空(每空1.5分,共12分)

1.有一个一维数组,存放10个数据,用一个函数求出最大值和最小值,并在主函数中输入与输出。

#include

void max_min(int a[],int *max,int *min);

void main( )

{

}

void max_min(int a[],int *max,int *min)

{*max=*min=a[0];

int i;

for (i=1;i

{

if (*max>array[i];

}

} if (*min>a[i])

2.下列程序将结构体变量tt中的内容写入D盘上的date.txt文件。

#include

#include

struct date

{int year,month,day;};

void main()

{ date tt={2002,2,12};

ofstream ;

outdate.open("d:\\date.txt",ios::binary);

if ( )

{ cerr

exit (-1) ; }

outdate.write( ,sizeof(tt));

;

}

六、编程题(17%)

1. 编写一个程序,输出13~100 之间的全部素数。要求每排10 个素数,素数之间以 空格分隔。(7%)

2. 设计一个教师类,并编写程序进行测试。教师类的属性有:编号、性别、职称、部门等,其中,部门要求是一个“部门”类的内嵌子对象,部门类要求有编号、名称、负责人等。要求用成员函数实现教师信息的录入和显示。要求设计出的类包含构造函数、内联成员函数、带默认值的成员函数等。(10%)


相关文章

  • 上海理工大学2011年专升本考纲
  • 上海理工大学2011年"专升本考纲 高等数学考纲 上海理工大学专升本招生录取 <高等数学>考试大纲(2008年12月修订) 本考试注重考察学生的基础知识.基本技能和思维能力.运算能力.以及分析问题和解决问题的能力. 一 ...查看


  • 重庆市专升本考试大纲
  • 2011年重庆市普通高等学校 学长总结的资料和成功心得: 专 升 本 考 试 大 纲 重庆市教育委员会高等教育处 二○一○年三月 重庆市普通高等学校专升本大学英语考试大纲 (2011年) 一.考试大纲适用对象 本大纲适用于重庆市各普通高等学 ...查看


  • 上海师范大学专升本考试复习资料
  • 上海师范大学专升本复习资料: 1.管理学原理[第四版]林志扬编著一书 注:书是新买的,上面只有内部老师画的重点 (包含上师大内部老师上课讲的全部重点,以及自己的总结)-------- 35元(已加运费): 2.2011年管理学原理专升本试题 ...查看


  • 2014下半年上海教师资格证报考条件
  • 2014下半年上海教师资格证报考条件 2014年上海下半年教师资格证备考专题 2014下半年上海中小学教师资格考试笔试公告已公布,上海教师资格证考试可参考了解详情;上海教师资格证笔试报考条件和上半年的是相似的,下面是2014下半年上海教师资 ...查看


  • 专升本音乐学基础大纲
  • <音乐学基础>课程教学大纲(黑体, 小3号) 课程名称:音乐学基础 课程类型: 必修课 总 学 时:72 讲课学时:72 实验学时: 适用对象: 音乐教育专业三年级 先修课程:基本乐理.视唱练耳.和声.艺术概论.音乐美学.音乐欣 ...查看


  • 2013年广东省成人高考报名全流程说明
  • 2013年广东省成人高考报名全流程说明 2013年成人高考报名一般流程如下,各地具体情况略有不同 (成人高考报名时间),但大体上都差不多.有志报考2013年全国成人高考的同学可以提前关注一下.在了解整个成考流程之前,有段视频让大家先看一下, ...查看


  • 2011年度成人高考专升本政治考试试题及答案
  • 一.选择题:本大题共31个小题,每小题2分,共62分.在每小题给出的四个选项中, 只有一项是符合题目要来的,把所选项前的字母填在题后的括号内. 1. 哲学的基本问题是 A.精神和物质的关系问题 B.认识和实践的关系问题 C.感性认识和理性认 ...查看


  • 泉州医学高等专科学校教务处文件2011(34)号专升本文
  • 泉州医学高等专科学校教务处文件 泉医教[2011] 34 号 泉州医学高等专科学校关于2012年选拔 普通专科(高职)应届毕业生升入本科学习考试报名的通知 各系.各实习队: 根据<福建省教育厅关于做好2012年普通专科(高职)应届毕业 ...查看


  • 2011年山东省专升本通知
  • 2011年山东省专升本通知.txt真正的好朋友并不是在一起有说不完的话题,而是在一起就算不说话也不会觉得尴尬.你在看别人的同时,你也是别人眼中的风景.要走好明天的路,必须记住昨天走过的路,思索今天正在走着的路.Upload By Yelky ...查看


热门内容