亚信C+面试题

一、选择题(单选题3分,多选题4分,共32分)

在每小题列出的四个备选项中只有1个或2个是符合题目要求的,多选题已用*标识出来,请将其答案填写在题后的括号内,错选或未选均无分。

1、下面这段关于指针和常量的关系的程序哪些是错误的( D ) void f(char * p)

{

char s[ ] = “HW5,V ,0,[1**********]”;

const char * pc =s; //A

pc[3] = ’g’; //B

pc = p; //C

char * const cp = s;

cp[3] = ‘a’; //D

}

A .const char * pc =s;

B .pc[3] = ’g’;

C .pc = p;

D .cp[3] = ‘a’

*2、下列关于函数指针的初始化哪些是错误的?( )

A . void reset(int *);

void (*pf) (void *) = reset;

B . int calc(int ,int );

int (*pf1)(int ,int ) =calc;

C . extern “c ” int compute(int * ,int);

int (*pf3)(int *,int) = compute;

D . void (*pf4)(const matrix &)=0;

3、在计费预处理程序中,取话单函数GetNextCdr 的原形类似于

int GetNextCdr(StdCdr *pd, int &ri),变量x 和y 的定义是 StdCdr x; int y,把x 和y 分别作为第一参数和第二参数来调用函数GetNextCdr ,正确的调用语句是( B )

A .GetNextCdr (x,&y);

B .GetNextCdr (&x,y);

C .GetNextCdr (&x,&y);

D .GetNextCdr (x,y);

4、下列关于结构体的使用哪些是正确的?(C )

A . struct StdCdr

{

char switch[3];

int number ;

StdCdr * next;

}

B . struct StdCdr

{

char switch[3];

int number ;

StdCdr next;

}

C . struct StdCdr

{

char switch[3];

int number ;

StdCdr * next;

};

D . StdCdr pStd = new StdCdr;

pStd. number = 10;

5、对于如下程序

#include

class A

{ public:

A() {std::cout

};

int main()

{ A a[4], b,*p; }

会输出多少个A ?( C )

A .2

B .3

C .5

D .6

6、派生类的对象对它的基类成员中哪些是可以访问的?(

A .公有继承的成员

B .公有继承的私有成员

C .公有继承的保护成员

D .公有继承的公有成员

E .私有继承的公有成员

7、下面派生类的虚函数的重新声明哪些是良好的?( )

A .Base * Base::copy(Base *);

Base * Derived::copy(Derived * );

B .Base * Base::copy(Base *);

Base * Derived::copy(Base * );

C .ostream & Base::print(int,ostream&= cout);

ostream & Derived::print(int,ostream&);

D .void Base::eval()const; D E )

void Derived::eval();

* 8、已知下列类层次结构,他们都定义了缺省的构造函数( C D )

class X{ };

class A{ };

class B: public A{ };

class C: private B{ };

class D:public X,public C{ };

D * pd = new D;

对于下列哪些转换是不允许的?

A. X * px = pd;

B. B * pb = pd;

C. A * pa = pd;

D. C * pc = pd;

9、在对语音话单文件进行取话单字段信息操作时,需要用刀lseek 函数,在lseek 函数的 (int filedes, off_t offset, int whence)参数中,若whence 参数为SEEK_CUR,则offset 参数代表下列的哪个含义( B )

A .将该文件的位移量设置为距文件开始处offset 个字节。

B .将该文件的位移量设置为其当前值加offset, offset可为正或负。

C .将该文件的位移量设置为文件长度加offset, offset可为正或负。

D .将该文件的位移量设置文件起始位置。

10、在打开一个ASCII 文本格式的语音清单文件时,需要用到open 函数,在open 函数的oflag 参数中,下面的哪个选项代表“若此文件不存在则创建它”的含义( B )

A . O_APPEND

B . O_CREAT

C . O_EXCL

D . O_TRUNC

二、问答题(共38分)

1、(5分)头文件中的 ifndef/define/endif 有什么作用?

避免重定义

2、(6分)const 有什么用途?(请至少说明两种)

防止传递的函数参数不被修改 提高程序健壮性

创建数组常量、指针常量、指向常量的指针

3、(8分)如下的字符串函数, 用于生存一个字符串 ”连接号码异常” ,并返回它的指针 char* strfun()

{

char str[20];

strcpy(str, “连接号码异常”);

printf(“%s \n”, str); //printf语句1

return str;

}

main()

{

char *pstr = strfun() ;

printf(“%s \n”, pstr); //printf语句2

}

问题1 : printf语句1和printf 语句2哪个能在屏幕上正在打印出来?

问题2 : 如果不能正常在屏幕上打印出字符串,请说明原因。

问题3 : 如果不修改strfun 的声明,请问该如何修改上述程序的错误。

4、(7分)下面是交换两个double 型数据的函数,

swap( double* p1, double* p2 )

{

double *p;

*p = *p1;

*p1 = *p2;

*p2 = *p;

}

main()

{

double a = 0.1;

double b = 0.2;

swap( &a, &b );

}

请找出上述代码的错误,指出错误的原因,并改正。

5、(7分)如果Win32程序的消息处理函数的定义由

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

修改为

LRESULT CALLBACK WndProc(MSG msg)

//MSG结构体中的成员变量包含有hWnd 、message 、wParam 和lParam 等

这种修改可行吗?为什么?

6、(5分)MFC 中,CWnd 类作为所有窗体封装类的根类,它定义的一些成员函数名称与Win32 API 函数名称完全相同,且功能也完全相同,如ShowWindow 、UpdateWindow 等。但函数参数却不同,如:

CWnd 类 —— BOOL ShowWindow( int nCmdShow );

Win32 API —— BOOL ShowWindow(HWND hWnd, int nCmdShow);

问题:为什么CWnd:: ShowWindow函数少了一个参数也能实现相同的功能

三、程序题(共30分)

1、(14分)在计费系统的预处理程序中,对话单进行格式转换时,需要使用strcpy 函数已知strcpy, 此函数的原型是

char *strcpy(char *strDest, const char *strSrc);

其中strDest 是目的字符串,strSrc 是源字符串。编写strcpy 函数

(1)不调用C++/C的字符串库函数,请编写函数 strcpy

(2)strcpy 能把strSrc 的内容复制到strDest ,为什么还要char * 类型的返回值?

2、(16分)在电信业务的后台处理程序中,经常会涉及到处理字符串,除了用char *处理字符串之外,C++还为我们提供了封装了的字符串类string ,其本质也是用一个动态数组来保存字符串,类String 的原型为:

class String

{

public:

String(const char *str = NULL); // 普通构造函数

String(const String &other); // 拷贝构造函数

~ String(void); // 析构函数

String & operate =(const String &other); // 赋值函数

private:

char *m_data; // 用于保存字符串

};

请编写String 的上述4个函数普通构造函数、拷贝构造函数、析构函数和赋值函数。

一、选择题(单选题3分,多选题4分,共32分)

在每小题列出的四个备选项中只有1个或2个是符合题目要求的,多选题已用*标识出来,请将其答案填写在题后的括号内,错选或未选均无分。

1、下面这段关于指针和常量的关系的程序哪些是错误的( D ) void f(char * p)

{

char s[ ] = “HW5,V ,0,[1**********]”;

const char * pc =s; //A

pc[3] = ’g’; //B

pc = p; //C

char * const cp = s;

cp[3] = ‘a’; //D

}

A .const char * pc =s;

B .pc[3] = ’g’;

C .pc = p;

D .cp[3] = ‘a’

*2、下列关于函数指针的初始化哪些是错误的?( )

A . void reset(int *);

void (*pf) (void *) = reset;

B . int calc(int ,int );

int (*pf1)(int ,int ) =calc;

C . extern “c ” int compute(int * ,int);

int (*pf3)(int *,int) = compute;

D . void (*pf4)(const matrix &)=0;

3、在计费预处理程序中,取话单函数GetNextCdr 的原形类似于

int GetNextCdr(StdCdr *pd, int &ri),变量x 和y 的定义是 StdCdr x; int y,把x 和y 分别作为第一参数和第二参数来调用函数GetNextCdr ,正确的调用语句是( B )

A .GetNextCdr (x,&y);

B .GetNextCdr (&x,y);

C .GetNextCdr (&x,&y);

D .GetNextCdr (x,y);

4、下列关于结构体的使用哪些是正确的?(C )

A . struct StdCdr

{

char switch[3];

int number ;

StdCdr * next;

}

B . struct StdCdr

{

char switch[3];

int number ;

StdCdr next;

}

C . struct StdCdr

{

char switch[3];

int number ;

StdCdr * next;

};

D . StdCdr pStd = new StdCdr;

pStd. number = 10;

5、对于如下程序

#include

class A

{ public:

A() {std::cout

};

int main()

{ A a[4], b,*p; }

会输出多少个A ?( C )

A .2

B .3

C .5

D .6

6、派生类的对象对它的基类成员中哪些是可以访问的?(

A .公有继承的成员

B .公有继承的私有成员

C .公有继承的保护成员

D .公有继承的公有成员

E .私有继承的公有成员

7、下面派生类的虚函数的重新声明哪些是良好的?( )

A .Base * Base::copy(Base *);

Base * Derived::copy(Derived * );

B .Base * Base::copy(Base *);

Base * Derived::copy(Base * );

C .ostream & Base::print(int,ostream&= cout);

ostream & Derived::print(int,ostream&);

D .void Base::eval()const; D E )

void Derived::eval();

* 8、已知下列类层次结构,他们都定义了缺省的构造函数( C D )

class X{ };

class A{ };

class B: public A{ };

class C: private B{ };

class D:public X,public C{ };

D * pd = new D;

对于下列哪些转换是不允许的?

A. X * px = pd;

B. B * pb = pd;

C. A * pa = pd;

D. C * pc = pd;

9、在对语音话单文件进行取话单字段信息操作时,需要用刀lseek 函数,在lseek 函数的 (int filedes, off_t offset, int whence)参数中,若whence 参数为SEEK_CUR,则offset 参数代表下列的哪个含义( B )

A .将该文件的位移量设置为距文件开始处offset 个字节。

B .将该文件的位移量设置为其当前值加offset, offset可为正或负。

C .将该文件的位移量设置为文件长度加offset, offset可为正或负。

D .将该文件的位移量设置文件起始位置。

10、在打开一个ASCII 文本格式的语音清单文件时,需要用到open 函数,在open 函数的oflag 参数中,下面的哪个选项代表“若此文件不存在则创建它”的含义( B )

A . O_APPEND

B . O_CREAT

C . O_EXCL

D . O_TRUNC

二、问答题(共38分)

1、(5分)头文件中的 ifndef/define/endif 有什么作用?

避免重定义

2、(6分)const 有什么用途?(请至少说明两种)

防止传递的函数参数不被修改 提高程序健壮性

创建数组常量、指针常量、指向常量的指针

3、(8分)如下的字符串函数, 用于生存一个字符串 ”连接号码异常” ,并返回它的指针 char* strfun()

{

char str[20];

strcpy(str, “连接号码异常”);

printf(“%s \n”, str); //printf语句1

return str;

}

main()

{

char *pstr = strfun() ;

printf(“%s \n”, pstr); //printf语句2

}

问题1 : printf语句1和printf 语句2哪个能在屏幕上正在打印出来?

问题2 : 如果不能正常在屏幕上打印出字符串,请说明原因。

问题3 : 如果不修改strfun 的声明,请问该如何修改上述程序的错误。

4、(7分)下面是交换两个double 型数据的函数,

swap( double* p1, double* p2 )

{

double *p;

*p = *p1;

*p1 = *p2;

*p2 = *p;

}

main()

{

double a = 0.1;

double b = 0.2;

swap( &a, &b );

}

请找出上述代码的错误,指出错误的原因,并改正。

5、(7分)如果Win32程序的消息处理函数的定义由

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

修改为

LRESULT CALLBACK WndProc(MSG msg)

//MSG结构体中的成员变量包含有hWnd 、message 、wParam 和lParam 等

这种修改可行吗?为什么?

6、(5分)MFC 中,CWnd 类作为所有窗体封装类的根类,它定义的一些成员函数名称与Win32 API 函数名称完全相同,且功能也完全相同,如ShowWindow 、UpdateWindow 等。但函数参数却不同,如:

CWnd 类 —— BOOL ShowWindow( int nCmdShow );

Win32 API —— BOOL ShowWindow(HWND hWnd, int nCmdShow);

问题:为什么CWnd:: ShowWindow函数少了一个参数也能实现相同的功能

三、程序题(共30分)

1、(14分)在计费系统的预处理程序中,对话单进行格式转换时,需要使用strcpy 函数已知strcpy, 此函数的原型是

char *strcpy(char *strDest, const char *strSrc);

其中strDest 是目的字符串,strSrc 是源字符串。编写strcpy 函数

(1)不调用C++/C的字符串库函数,请编写函数 strcpy

(2)strcpy 能把strSrc 的内容复制到strDest ,为什么还要char * 类型的返回值?

2、(16分)在电信业务的后台处理程序中,经常会涉及到处理字符串,除了用char *处理字符串之外,C++还为我们提供了封装了的字符串类string ,其本质也是用一个动态数组来保存字符串,类String 的原型为:

class String

{

public:

String(const char *str = NULL); // 普通构造函数

String(const String &other); // 拷贝构造函数

~ String(void); // 析构函数

String & operate =(const String &other); // 赋值函数

private:

char *m_data; // 用于保存字符串

};

请编写String 的上述4个函数普通构造函数、拷贝构造函数、析构函数和赋值函数。


相关文章

  • 亚信面试题
  • C 部分 1. 排序算法 时间复杂度 ,说出你喜欢的一种算法,说其原因 插入排序 O(n^2) 归并排序 O(nlog2n) 快速排序 最好 O(nlog2n) 最坏 O(n^2) 冒泡排序 O (n^2) 选择排序 O(n^2) 堆排序 ...查看


  • 达内上市追问:13万学生得到了什么价值?
  • 达内上市追问:13万学生得到了什么价值? 2014年4月3日,抢在清明小长假之前,达内国际在美国纳斯达克正式挂牌交易,给沉寂多年的中概股,打上了一直强心剂,之后的4月9日,爱康国宾也成功登陆纳斯达克.作为今年首登纳斯达克的中国企业,也是中国 ...查看


  • 亚洲安全合作与2014上海亚信峰会
  • ※亚信会上海峰会 一. 当前亚洲发展和安全形势 (一) 亚洲形势错综复杂:亚洲是地球上最大的洲,资源丰富,历史悠久,文化博大,宗教众多,是21世纪世界经济发展的重要引擎.  当前亚洲的发展前景正受到两大趋势的影响(经济社会发展和政治稳定) ...查看


  • 中越南海争端后_越南国家副主席阮氏缘访问上海参加亚信峰会
  • 中越南海争端后 越南国家副主席阮氏缘访问上海参加亚信峰会 关键字 >> 越南越南打砸中资企业事件越南高官阮氏缘亚信峰会越南反华骚乱越南发生打砸中资企业事件中国人回国越南反华反华暴乱越南打砸中企 最近发生的越南暴力打砸抢烧中资企业 ...查看


  • 亚信峰会安保 武警出征
  • 5月13日,武警上海总队浦东新区支队举行主题为"亚信安保树形象.浦东卫士铸忠诚"安保誓师动员大会.誓师完毕后,部队出征奔赴各自警戒目标,将相继担负亚信峰会现场警卫.专机警卫.社会面武装巡逻.轨交站点执勤等任务. 亚洲相互 ...查看


  • 如何设计母子公司管控财务组织结构
  • 亚信的薪酬管理 亚信技术工程部经理司建伟最初加盟亚信时,是因为"觉得这个公司很有朝气",他虽然工资不多,但是觉得很有前途,是在做事业,是在为中国建设Internet 贡献一点力量.当时China Net有300多台设备, ...查看


  • 论项目的人力资源管理
  • 摘要 本文以2007年我主持开发的某市网通综合业务升级改造项目为例,探讨了项目进行过程中如何进行人力资源管理的问题,本文讲述了信息系统项目的人力资源管理过程,包括人力资源计划编制.组建项目团队.建设项目团队.管理项目团队等内容. 该综合业务 ...查看


  • 用户界面设计规范
  • 154845814.doc 文档修订摘要 亚信联创科技(中国)有限公司版权所有 文档中的全部内容属亚信联创科技(中国)有限公司所有, 未经允许,不可全部或部分发表.复制.使用于任何目的. 154845814.doc 目录 第1章 第2章 序 ...查看


  • "一带一路"牵动新时期中国外交大战略
  • 2015-01-21 10:17 来源:中国社会科学报 我有话说 2015-01-21 10:17:08来源:中国社会科学报作者:责任编辑:康慧珍 作者:首都经济贸易大学经济学院 徐则荣 2013年秋,国家主席习近平在出访哈萨克斯坦和印度尼 ...查看


热门内容