普天C++笔试题及答案

进修社 人气:9.82K

1.实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数。

普天C++笔试题及答案

void DeleteNode(DuNode *p)

{

p->prior->next=p->next;

p->next->prior=p->prior;

free(p);

}

void InsertNode(DuNode *p, DuNode *s)//Node "s" is inserted after "p"

{

s->next=p->next;

p->next->prior=s;

p->next=s;

s->prior=p;

}

2.写一个函数,将其中的/t都转换成4个空格.

/* Name: Copyright: Author: 52coder

Date: 12-07-03 16:40

Description: 写一个函数,将其中的/t都转换成4个空格

*/

#include

using namespace std;

char* Convert_t(char *des,char *src)

{

char *temp;

des=new char[100];

temp=des;

while(*src!='/0')

{

if(*src=='/t')

{

src++;

*des++=' ';

*des++=' ';

*des++=' ';

*des++=' ';

continue;

}

*des++=*src++;

}

*des='/0';

des=temp;

return des;

}

int main()

{

char *t="asdf/tasd/tasasddas//tdfasdf",*d;

cout<

cout<

getchar();

}

ows程序的入口是哪里?写出Windows消息机制的流程。

WINDOWS入口是WinMain函数

消息机制的流程:

系统中发生了某个事件

Windows把这个事件翻译为消息,然后把它放到消息队列中

应用程序从消息队列中接收到这个消息,把它存放在TMsg记录中

应用程序把消息传递给一个适当的窗口的窗口过程

窗口过程响应这个消息并进行处理

4.如何定义和实现一个类的成员函数为回调函数?

如果类的成员函数是一个callback函数, 必须宣告它为”static”,才能把C++ 编译器加诸于函数的一个隐藏参数this去掉。

5.C++里面是不是所有的动作都是main()引起的?如果不是,请举例。

不是的,C++里面有些动作不是引起的,比如,全局对象的实例化、全局变量的动态空间申请,等等.

下面是一个例子:

#include

using namespace std;

//全局变量的动态空间申请在程序运行之后,main运行之前完成。所以不是所有的.动作都是main引起的

char *des=new char[100];

int main()

{

char *des="abc";

cout<

getchar();

}

6.C++里面如何声明const void f(void)函数为C程序中的库函数?

extern “C” const void f(void);

这样声明之后,相当于告诉C, 函数const void f(void)是在C++语言的文件中声明或者实现的,c程序可以使用这个C++中的函数了,从而实现C++和c的混合编程。

7.下列哪两个是等同的

int b;

A const int *a = &b; //指针a所指内容是常量,等同于int const *a,

B const * int a = &b; //没有这种写法 ,只有int *const a,指针a是常量

C const int* const a = &b; //指针a是常量,所指的内容也是常量

D int const* const a = &b; //指针a是常量,所指的内容也是常量

所以C和D是一样的

8.内联函数在编译时是否做参数类型检查?

内联函数和普通函数都要做类型检查,宏不做类型检查。