c++一些笔试题目和整理的答案

进修社 人气:8.3K

NO1

c++一些笔试题目和整理的答案

Below is usual way we find one element in an array

const int *find1(const int* array, int n, int x)

{

const int* p = array;

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

{

if(*p == x)

{

return p;

}

++p;

}

return 0; }

In this case we have to bear the knowledge of value type "int", the size of array, even the existence of an array. Would you re-write it using template to eliminate all these dependencies?

template

const T *find1(const T* array, int n, T x)

{

const T* p = array;

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

{

if(*p == x)

{

return p;

}

++p;

}

return 0; }

NO2

Give an example of implementing a Stack in the template way(only template class declaration without detail definition and realization)

template

class Stack

{

public:

Stack(int = 10) ;

~Stack() { [] stackPtr ; }

int push(const T&);

int pop(T&) ;

int isEmpty()const { return top == -1 ; }

int isFull() const { return top == size - 1 ; }

private:

int size ; // number of elements on Stack.

int top ;

T* stackPtr ;

} ;

NO3

Implement the simplest singleton pattern(initialize if necessary).

class Singleton {

public:

static Singleton* Instance();

protected:

Singleton();

private:

static Singleton* _instance;

}

// Implementation

Singleton* Singleton::_instance = 0;

Singleton* Singleton::Instance() {

if (_instance == 0) {

_instance = new Singleton;

}

return _instance;

}

NO4

and Diamond like playing game of coins, One day they designed a new set of rules:

1)Totally 10 coins

2)One can take away 1,2or 4 coins at one time by turns

3)Who takes the last loses.

Given these rules Whether the winning status is pre-determined or not

解答: 1:从后面开始考虑,最后肯定要留1个才能保证自己赢

2:所以要设法让对方留下2,3,5个

3:也就是要自己取后留下1,4,6,7,8,9

4:如果自己取后留下6,对方取2个,与(3)矛盾,所以排除6

5:如果自己取后留下8,对方取4个,与(3)一样情况,所以也排除8

6:同样,9也不行,如果我抽后剩下9,对方抽2个,就反过来成对方抽剩成7个了,也与3)矛盾,所以也排除

7:所以很显然,我只能抽剩1,4,7

8:因为只能抽后剩1,4,7才能赢,我先抽得话不可能达到这几个数,很显然,只能让对

方先抽,也即是先抽的人输


TAGS:笔试 题目