东南大学2010-2014年考研复试c++笔试题汇总

【C】2010年东南大学计算机研究生复试笔试题----(卢孝勋)版

1、简答题(60分)

1、简述你对“面向对象”和“面向过程”编程思想的认识与思考

2、ADT是什么?简述你对“数据抽象”和“信息隐藏”的认识

3、const和static有什么作用?

4、友元关系的利与弊

5、C++多态的实现

6、STL是什么?组成部分和核心作用

2、程序设计题(90分)

1、输入n个十进制数转换成二进制写到文件,n是随机得到

2、写两个模板函数:插入排序法的迭代实现与递归实现

3、文件中有类似的一行行字符串“(010)(150********)|123|(430070)”,按以下格式输出:“区号| 电话号码| 城市编号| 邮编”

(具体的字符串格式记不清了,但就是考字符串的解析)

4、设计一个多项式类Polynomial(包括构造函数、复制构造函数、析构函数、赋值函数、实现两个多项式相加)

5、几个类(Vehicle类Car类Streetwheel类Brake类)有着必然的联系,设计类与实现

6、一个基类Shape,在基类的基础上继承写一个二维图形类,再继承写一个三维图形类,设计与实现

2011年

一、简答题(共5 题,每题10 分)

1、简述对C++中的数据类型和抽象数据类型(ADTs)的理解。

2、请举例并写出相关代码,阐述C++在什么情况下必须进行运算符重载。

3、为什么说“继承是C++面向对象的一个主要特征之一”,请做一下简要说明。

4、如何声明和使用虚函数,说明它在多态性中的作用和意义。

5、请说明函数模板(Function Template) 和函数模板实例化(function-template specification)的区别和联系。

二、编程题(共6 题,100 分)

3、编写一个递归函数模板,从一个数组中找出最小值,并返回该值的数组元素下标。(15’)

4、编写两个函数SortOne 和SortTwo,分别对字符串数组实现插入排序和选择排序。(15’)

5、对于一个数组Array 类的chess 对象,通过调用运算符重载函数() ,可实现chess(row,column)代替chess[row][column],请完成:(1)、Array 类的基本定义,包

括构造函数、析构函数、拷贝构造函数和基本数据成员;(2)、运算符重载函数()的

定义。(20’)

6、定义一个具有多态性的基类Shape,派生出三个类:圆Circle(坐标点和半径),矩形Rec 类(两点不同坐标),三角形Tri 类(三个不同坐标),每个类中至少有一个计算面

积的函数。编写程序,从文件file.txt 中读取数据来创建各类的对象,并放在Shape

指针向量中,最后循环处理每个对象并输出面积。(20’)

【假设file.txt 中的数据如下:C:123,5,40;T:1,2,32,50,60,3;R:6,8,8,100】

2012年

一.简答题

1.编写语句说明枚举类型是如何定义和使用的。

2.程序改错,如果有错,说明出错的地方,正确则给出输出。

(1)#include

using namespace std;

int main()

{

for(int i=0;i<8;i++)

{

if(i%2==0)

cout<

if(i%3==0)

continue;

if(i%5==0)

break;

cout<<"End of programming\n";

}

cout<<"End of programming\n";

return 0;

}

(2)#include

using namespace std;

int main()

{

int c;

if((c=cin.get())!=EOF)

{

main();

cout<

}

return 0;

}

(3)#include

using namespace std;

void fun(int a[],int cur,int s)

{

{

if(cur

fun(a,cur+1,s);

cout<

}

}

int main()

{

int a[]={1,2,3,4,5,6,7,8,9,10};

fun(a,0,10);

return 0;

}

3.一个函数模板和模板函数的区别。

4.为什么说“继承是面向对象的主要特征之一”?请简要说明理由。

5.如何声明和使用虚函数。请说明它在多态性中的作用和意义。

二.编程题

1.编写程序,求最小公倍数。

2.编写程序,计算一系列整数之和。假定:输入的第一个整数为继续输入整数的

个数。【要求每条输入语句仅读取一个整数】例如:输入5,101,213,325,437,549,表明输入五个整数分别是101,213,325,437,549.

3.编写程序,读入几行文本,并打印一个表格,显示每个不同单词在文本中出现

的次数。

例如输入:Welcome to C++ world ! Happy birthday to you .This is the

weather report across the world for tomorrow , talk about it in pairs

following the model below. 结果为Welcome 出现1 次,to 出现2 次,C++

出现1 次等。

4.已知:Person 类包含3 个数据成员(name , nationality 和sex)和三个成

员函数(构造函数,printName 函数和printNationality 函数),其中name

的数据类型为Name 类。Name 类包含三个数据成员(first , middle 和last)

和两个成员函数(构造函数和printName 函数)。

定义Person 类和Name 类,并编写程序测试这两个类的所有接口。

2013年

一.简答题

1.什么是逻辑错误?什么是语法错误?请举例说明.

2.控制语句有哪几种?请画出它的流程图或UML图.

3.什么是运算符重载?它如何增强了C++的扩展性?

4.为什么说”继承是C++面向对象的主要特征之一”?请简要说明.

5.类作用域和文件作用域的区别是什么?请详细说明.

二.编程题

1.编写程序,计算1~20000之间的质数,输出时要求每行10个数.

2.编写简单的加密,解密程序.在main()函数中接收需要加密的字符串,进行加密。加密

时,将字符指针+1,Encrpy的参数为字符指针。解密时将字符指针-1,Decrpy的参数亦为字符指针。

3.编写如下算法:1.选择排序2.桶排序

4.对应于ASCII字符中33~126之间的字符,将其转化为10进制,8进制,16进制,

以及ACII码输出到文件,在该文件中依次输出四张ASCII表格。

5.处理字符串(025)87234865-987,用strtok处理,以“区号电话分机号”的格

式输出。

6.已知:Person类包含3个数据成员(name,nationality,sex)和三个成员函数(构造函

数,printName函数和printNationality函数),其中name的数据类型为Name类。

Name类包含三个数据成员(first,middle,last)和两个成员函数(构造函数和printName 函数)

7.定义Person类和Name类,并编写程序测试这两个类的所有接口。

2014年

1、指出错误并改正

第一题少了一点东西

#include

using namespace std;

void f(int *p)

{ if(p) //就是如果p不为空,是不是这么写的记不清了

*p *= 100;

cout<<*p<

}

void main()

{

int p = 10;

int * ptr;

f(ptr);

}

2、说出下面程序输出什么

#include

using namespace std;

void main()

{

char* str="THIS IS PROGRAMMING.";

int length = (忘了具体的但是这个length就是字符串的长度);

int j = 0;

for(int k = 0; k < length; k++)

{

if(str[j] < str[k]) j = k;

}

int temp = j;

str[j] = str[7];

str[7] = str[13];

str[13] str[length];

cout<

}

3、记不得了

4、记不得了

5.是问输出什么

class A

{

public:

virtual void print()

{

cout<<"A::print"<

}

}

class B: public A

{

public:

void print()

{

cout<<"B::print"<

}

}

class C: public B

{

public:

void print()

{

cout<<"C::print"<

}

}

void main()

{

B b();

C c();

A* a;

a = c;

a->print();

a = b;

a->print();

}

【编程题】

第一题:用递归编程

求ack(int m, int n),定义似乎是

ack(0,n) = n+1;

ack(m,0)=m+1

ack(m,n) = ack(ack(m-1),ack(n-1))

第二题是写一个IntToStr(int a)函数

将一个整形数转换为字符串

第三题是写一个swap(int a[], int m, int n )

使得数组的前m项和后n项交换位置

第四题:

(1)写一个日期Date类

成员有年月日,成员函数有无参数构造函数、设置年月日的函数setDate

还有一个打印函数display

3个

(2)第二个类是员工类Employee,成员有工号、姓名、身份证号、出生日期、受聘日期、聘用年限、月薪

成员函数要有构造函数、改变出生日期函数、改变聘用年限函数、改变月薪函数、续聘函数(要求当续聘后的年龄大于60时给提示不能续聘)

还有展示函数display,需要有工号、姓名、身份证号、出生日期、聘用【到期】时间、聘用年限、【年】薪

注意第二个类会有Date类或其指针作为成员

相关主题
相关文档
最新文档