纸钞屋第一季迅雷 下载_ 【注选】-贺州高速路口
淘宝减肥药排行榜十强
只推淘宝安全有效的减肥药

当前位置:纸钞屋第一季迅雷 下载 > 减肥产品

纸钞屋第一季迅雷 下载

时间:2020-05-30 02:05  编辑:wendj

*1.求下面函数的返回值(微软)

int func(x)

{

int countx = 0;

while(x)

{

countx ++;

x = x&(x-1);

}

return countx;

}

假定x = 9999。答案:8

思路:将x转化为2进制,看含有的1的个数。

2. 什么是“引用”?申明和使用“引用”要注意哪些问题?

答:引用就是某个目标变量的“别名”(alias),对引用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

!!!!!!!!!!!!!!!!!!!!3. 将“引用”作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

4. 在什么时候需要使用“常引用”?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符&引用名=目标变量名;

例1

int a ;

const int &ra=a;

ra=1; //错误

a=1; //正确

例2

string foo( );

void bar(string & s);

那么下面的表达式将是非法的:

bar(foo( ));

bar("hello world");

原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

引用型参数应该在能被定义为const的情况下,尽量定义为const 。

!!!!!!!!!!!!!!!!!!!!5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则? 格式:类型标识符&函数名(形参列表及类型说明){ //函数体}

好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!

注意事项:

(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

(2)不能返回函数内部new分配的内存的引用。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。

(3)可以返回类成员的引用,但最好是const。这条原则可以参照Effective C++[1]的Item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。

(4)流操作符重载返回值申明为“引用”的作用:

流操作符<<和>>,这两个操作符常常希望被连续使用,例如:cout << "hello" << endl;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流对象和返回一个流对象指针。但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流指针则不能连续使用<<操作符。因此,返回一个流对象引用是惟一选择。这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。赋值操作符=。这个操作符象流操作符一样,是可以连续使用的,例如:x = j = 10;或者(x=10)=100;赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。

例3

#i nclude <iostream.h>

int &put(int n);

int vals[10];

int error=-1;

void main()

{

put(0)=10; //以put(0)函数值作为左值,等价于vals[0]=10;

put(9)=20; //以put(9)函数值作为左值,等价于vals[9]=20;

cout<<vals[0];

cout<<vals[9];

}

int &put(int n)

{

if (n>=0 && n<=9 ) return vals[n];

else { cout<<"subscript error"; return error; }

}

(5)在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用, Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。

!!!!!!!!!!!!!!!!!!!!6. “引用”与多态的关系?

引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

例4

Class A; Class B : Class A{...}; B b; A& ref = b;

7. “引用”与指针的区别是什么?

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。

8. 什么时候需要“引用”?

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

以上2-8 参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx

9. 结构与联合有和区别?

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

10. 下面关于“联合”的题目的输出?

a)

#i nclude <stdio.h>

union

{

int i;

char x[2];

}a;

void main()

{

a.x[0] = 10;

a.x[1] = 1;

printf("%d",a.i);

}

答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)

b)

main()

{

union{ /*定义一个联合*/

int i;

struct{ /*在联合中定义一个结构*/

char first;

char second;

}half;

}number;

number.i=0x4241; /*联合成员赋值*/

printf("%c%c\n", number.half.first, mumber.half.second);

number.half.first='a'; /*联合中结构成员赋值*/

number.half.second='b';

printf("%x\n", number.i);

getch();

}

答案:AB (0x41对应'A',是低位;Ox42对应'B',是高位)

6261 (number.i和number.half共用一块地址空间)

11. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数strcpy。

答案:

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

{

if ( strDest == NULL || strSrc == NULL)

return NULL ;

if ( strDest == strSrc)

return strDest ;

char *tempptr = strDest ;

while( (*strDest++ = *strSrc++) != …

*1.求下面函数的返回值(微软)

int func(x)

{

int countx = 0;

while(x)

{

countx ++;

x = x&(x-1);

}

return countx;

}

假定x = 9999。答案:8

思路:将x转化为2进制,看含有的1的个数。

2. 什么是“引用”?申明和使用“引用”要注意哪些问题?

答:引用就是某个目标变量的“别名”(alias),对引用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

!!!!!!!!!!!!!!!!!!!!3. 将“引用”作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

4. 在什么时候需要使用“常引用”?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符&引用名=目标变量名;

例1

int a ;

const int &ra=a;

ra=1; //错误

a=1; //正确

例2

string foo( );

void bar(string & s);

那么下面的表达式将是非法的:

bar(foo( ));

bar("hello world");

原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

引用型参数应该在能被定义为const的情况下,尽量定义为const 。

!!!!!!!!!!!!!!!!!!!!5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则? 格式:类型标识符&函数名(形参列表及类型说明){ //函数体}

好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!

注意事项:

(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

(2)不能返回函数内部new分配的内存的引用。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。

(3)可以返回类成员的引用,但最好是const。这条原则可以参照Effective C++[1]的Item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。

(4)流操作符重载返回值申明为“引用”的作用:

流操作符<<和>>,这两个操作符常常希望被连续使用,例如:cout << "hello" << endl;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流对象和返回一个流对象指针。但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流指针则不能连续使用<<操作符。因此,返回一个流对象引用是惟一选择。这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。赋值操作符=。这个操作符象流操作符一样,是可以连续使用的,例如:x = j = 10;或者(x=10)=100;赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。

例3

#i nclude <iostream.h>

int &put(int n);

int vals[10];

int error=-1;

void main()

{

put(0)=10; //以put(0)函数值作为左值,等价于vals[0]=10;

put(9)=20; //以put(9)函数值作为左值,等价于vals[9]=20;

cout<<vals[0];

cout<<vals[9];

}

int &put(int n)

{

if (n>=0 && n<=9 ) return vals[n];

else { cout<<"subscript error"; return error; }

}

(5)在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用, Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。

!!!!!!!!!!!!!!!!!!!!6. “引用”与多态的关系?

引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

例4

Class A; Class B : Class A{...}; B b; A& ref = b;

7. “引用”与指针的区别是什么?

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。

8. 什么时候需要“引用”?

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

以上2-8 参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx

9. 结构与联合有和区别?

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

10. 下面关于“联合”的题目的输出?

a)

#i nclude <stdio.h>

union

{

int i;

char x[2];

}a;

void main()

{

a.x[0] = 10;

a.x[1] = 1;

printf("%d",a.i);

}

答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)

b)

main()

{

union{ /*定义一个联合*/

int i;

struct{ /*在联合中定义一个结构*/

char first;

char second;

}half;

}number;

number.i=0x4241; /*联合成员赋值*/

printf("%c%c\n", number.half.first, mumber.half.second);

number.half.first='a'; /*联合中结构成员赋值*/

number.half.second='b';

printf("%x\n", number.i);

getch();

}

答案:AB (0x41对应'A',是低位;Ox42对应'B',是高位)

6261 (number.i和number.half共用一块地址空间)

11. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数strcpy。

答案:

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

{

if ( strDest == NULL || strSrc == NULL)

return NULL ;

if ( strDest == strSrc)

return strDest ;

char *tempptr = strDest ;

while( (*strDest++ = *strSrc++) != …

*1.求下面函数的返回值(微软)

int func(x)

{

int countx = 0;

while(x)

{

countx ++;

x = x&(x-1);

}

return countx;

}

假定x = 9999。答案:8

思路:将x转化为2进制,看含有的1的个数。

2. 什么是“引用”?申明和使用“引用”要注意哪些问题?

答:引用就是某个目标变量的“别名”(alias),对引用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

!!!!!!!!!!!!!!!!!!!!3. 将“引用”作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

4. 在什么时候需要使用“常引用”?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符&引用名=目标变量名;

例1

int a ;

const int &ra=a;

ra=1; //错误

a=1; //正确

例2

string foo( );

void bar(string & s);

那么下面的表达式将是非法的:

bar(foo( ));

bar("hello world");

原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

引用型参数应该在能被定义为const的情况下,尽量定义为const 。

!!!!!!!!!!!!!!!!!!!!5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则? 格式:类型标识符&函数名(形参列表及类型说明){ //函数体}

好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!

注意事项:

(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

(2)不能返回函数内部new分配的内存的引用。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。

(3)可以返回类成员的引用,但最好是const。这条原则可以参照Effective C++[1]的Item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。

(4)流操作符重载返回值申明为“引用”的作用:

流操作符<<和>>,这两个操作符常常希望被连续使用,例如:cout << "hello" << endl;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流对象和返回一个流对象指针。但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流指针则不能连续使用<<操作符。因此,返回一个流对象引用是惟一选择。这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。赋值操作符=。这个操作符象流操作符一样,是可以连续使用的,例如:x = j = 10;或者(x=10)=100;赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。

例3

#i nclude <iostream.h>

int &put(int n);

int vals[10];

int error=-1;

void main()

{

put(0)=10; //以put(0)函数值作为左值,等价于vals[0]=10;

put(9)=20; //以put(9)函数值作为左值,等价于vals[9]=20;

cout<<vals[0];

cout<<vals[9];

}

int &put(int n)

{

if (n>=0 && n<=9 ) return vals[n];

else { cout<<"subscript error"; return error; }

}

(5)在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用, Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。

!!!!!!!!!!!!!!!!!!!!6. “引用”与多态的关系?

引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

例4

Class A; Class B : Class A{...}; B b; A& ref = b;

7. “引用”与指针的区别是什么?

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。

8. 什么时候需要“引用”?

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

以上2-8 参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx

9. 结构与联合有和区别?

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

10. 下面关于“联合”的题目的输出?

a)

#i nclude <stdio.h>

union

{

int i;

char x[2];

}a;

void main()

{

a.x[0] = 10;

a.x[1] = 1;

printf("%d",a.i);

}

答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)

b)

main()

{

union{ /*定义一个联合*/

int i;

struct{ /*在联合中定义一个结构*/

char first;

char second;

}half;

}number;

number.i=0x4241; /*联合成员赋值*/

printf("%c%c\n", number.half.first, mumber.half.second);

number.half.first='a'; /*联合中结构成员赋值*/

number.half.second='b';

printf("%x\n", number.i);

getch();

}

答案:AB (0x41对应'A',是低位;Ox42对应'B',是高位)

6261 (number.i和number.half共用一块地址空间)

11. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数strcpy。

答案:

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

{

if ( strDest == NULL || strSrc == NULL)

return NULL ;

if ( strDest == strSrc)

return strDest ;

char *tempptr = strDest ;

while( (*strDest++ = *strSrc++) != …

*1.求下面函数的返回值(微软)

int func(x)

{

int countx = 0;

while(x)

{

countx ++;

x = x&(x-1);

}

return countx;

}

假定x = 9999。答案:8

思路:将x转化为2进制,看含有的1的个数。

2. 什么是“引用”?申明和使用“引用”要注意哪些问题?

答:引用就是某个目标变量的“别名”(alias),对引用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

!!!!!!!!!!!!!!!!!!!!3. 将“引用”作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

4. 在什么时候需要使用“常引用”?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const 类型标识符&引用名=目标变量名;

例1

int a ;

const int &ra=a;

ra=1; //错误

a=1; //正确

例2

string foo( );

void bar(string & s);

那么下面的表达式将是非法的:

bar(foo( ));

bar("hello world");

原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

引用型参数应该在能被定义为const的情况下,尽量定义为const 。

!!!!!!!!!!!!!!!!!!!!5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则? 格式:类型标识符&函数名(形参列表及类型说明){ //函数体}

好处:在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error!

注意事项:

(1)不能返回局部变量的引用。这条可以参照Effective C++[1]的Item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

(2)不能返回函数内部new分配的内存的引用。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。

(3)可以返回类成员的引用,但最好是const。这条原则可以参照Effective C++[1]的Item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。

(4)流操作符重载返回值申明为“引用”的作用:

流操作符<<和>>,这两个操作符常常希望被连续使用,例如:cout << "hello" << endl;因此这两个操作符的返回值应该是一个仍然支持这两个操作符的流引用。可选的其它方案包括:返回一个流对象和返回一个流对象指针。但是对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象,也就是说,连续的两个<<操作符实际上是针对不同对象的!这无法让人接受。对于返回一个流指针则不能连续使用<<操作符。因此,返回一个流对象引用是惟一选择。这个唯一选择很关键,它说明了引用的重要性以及无可替代性,也许这就是C++语言中引入引用这个概念的原因吧。赋值操作符=。这个操作符象流操作符一样,是可以连续使用的,例如:x = j = 10;或者(x=10)=100;赋值操作符的返回值必须是一个左值,以便可以被继续赋值。因此引用成了这个操作符的惟一返回值选择。

例3

#i nclude <iostream.h>

int &put(int n);

int vals[10];

int error=-1;

void main()

{

put(0)=10; //以put(0)函数值作为左值,等价于vals[0]=10;

put(9)=20; //以put(9)函数值作为左值,等价于vals[9]=20;

cout<<vals[0];

cout<<vals[9];

}

int &put(int n)

{

if (n>=0 && n<=9 ) return vals[n];

else { cout<<"subscript error"; return error; }

}

(5)在另外的一些操作符中,却千万不能返回引用:+-*/ 四则运算符。它们不能返回引用, Effective C++[1]的Item23详细的讨论了这个问题。主要原因是这四个操作符没有side effect,因此,它们必须构造一个对象作为返回值,可选的方案包括:返回一个对象、返回一个局部变量的引用,返回一个new分配的对象的引用、返回一个静态对象引用。根据前面提到的引用作为返回值的三个规则,第2、3两个方案都被否决了。静态对象的引用又因为((a+b) == (c+d))会永远为true而导致错误。所以可选的只剩下返回一个对象了。

!!!!!!!!!!!!!!!!!!!!6. “引用”与多态的关系?

引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。

例4

Class A; Class B : Class A{...}; B b; A& ref = b;

7. “引用”与指针的区别是什么?

指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。此外,就是上面提到的对函数传ref和pointer的区别。

8. 什么时候需要“引用”?

流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

以上2-8 参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763551.aspx

9. 结构与联合有和区别?

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。

2. 对于联合的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。

10. 下面关于“联合”的题目的输出?

a)

#i nclude <stdio.h>

union

{

int i;

char x[2];

}a;

void main()

{

a.x[0] = 10;

a.x[1] = 1;

printf("%d",a.i);

}

答案:266 (低位低地址,高位高地址,内存占用情况是Ox010A)

b)

main()

{

union{ /*定义一个联合*/

int i;

struct{ /*在联合中定义一个结构*/

char first;

char second;

}half;

}number;

number.i=0x4241; /*联合成员赋值*/

printf("%c%c\n", number.half.first, mumber.half.second);

number.half.first='a'; /*联合中结构成员赋值*/

number.half.second='b';

printf("%x\n", number.i);

getch();

}

答案:AB (0x41对应'A',是低位;Ox42对应'B',是高位)

6261 (number.i和number.half共用一块地址空间)

11. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数strcpy。

答案:

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

{

if ( strDest == NULL || strSrc == NULL)

return NULL ;

if ( strDest == strSrc)

return strDest ;

char *tempptr = strDest ;

while( (*strDest++ = *strSrc++) != …

患儿,2个月,因腹泻住院,近2日臀部皮肤发红,伴有皮疹,护士进行臀部皮肤护理时错误的操作是                A.每次便后用温水洗净B.洗后用小毛巾吸干水分C.可用鹅颈灯照射臀部D.烤灯前涂油E.照射时间15~20分钟

正确答案

D

解答

暂无解析

‟)

;

return tempptr ;

}

!!!!!!!!!!!!!!!!!!!!12. 已知String类定义如下:

class String

{

public:

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

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

~ String(); // 析构函数

String & operater =(const String &rhs); // 赋值函数

private:

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

};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)

{

if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断{

m_data = new char[1] ;

m_data[0] = '

患儿,2个月,因腹泻住院,近2日臀部皮肤发红,伴有皮疹,护士进行臀部皮肤护理时错误的操作是                A.每次便后用温水洗净B.洗后用小毛巾吸干水分C.可用鹅颈灯照射臀部D.烤灯前涂油E.照射时间15~20分钟

正确答案

D

解答

暂无解析

完美芦荟胶采用先进的冷冻稳定法,三十倍的浓缩从天然草本植物芦荟中萃取而成,其主要原料芦荟精华素来自美国,纯净度非常高,不含化学添加剂和杂质,无刺激性,包装精巧,携带方便。

1、对割伤、擦伤、伤口溃烂、烫伤、皮肤痕痒、青春痘、黑斑、蚊虫叮咬,牙痛,唇角溃烂,手术疤痕等等都有明显的辅助作用;

2、多糖类物质和氨基酸能形成天然的保温因子,补充皮肤中丢失的水分,恢复胶原蛋白的功能,使肌肤湿润、柔美,具有弹性;

3、内含的超氧化物歧化酶、过氧化酶,维生素C,维生素E,胡萝卜素等自由基的清除剂,能清除绰起皮肤细胞衰老的自由基,延缓皮肤细胞变老;能有效调和皮肤,滋养皮肤和保护皮肤的功效!是美容精品;

4、使皮肤细腻,从而有效地保护皮肤组织不受有害物质的伤害;

5、其内的氨基酸、维生素,矿物质,酵素,有机酸及水是皮肤必需的营养素,天生的收敛作用,能使皮肤坚实细致,预防皮肤松驰,有效锁住水分,抑制产生黑色素;

6、促进细胞新陈代谢,能舒缓皮肤不适,改善皮肤粗糙,对皮肤没有刺激性;

7、减少皱纹,预防和减轻雀斑、妊娠斑和老年斑;

8、具有营养、保湿、防晒、增白、抗皱、去斑、去痘的功效。

使用安全可靠,是每个家庭必备的护肤品,外出旅游,可随时带上几支,小巧方便。

【成分】采用了优质原料——采用先进的冷冻稳定法,从天然草本植物芦荟中萃取而成,其主要原料芦荟精华素来自美国,纯净度非常高,不含化学添加剂和杂质,无刺激性。

【使用方法】

1、如果有青春痘,那么洗脸后或你用器具清理里面的东西后将此凝胶抹在上面,早一次晚一次,一周后就有效果;

2、如果你的皮肤干性,那么一周两次用此做面膜,(用温热的水洗脸后抹一层厚一点的在脸上,半小时洗净再擦一层薄的)两周后,皱纹明显减少迹象,皮肤变白晰!这真的是好产品太好了;

3、完美芦荟胶还有杀菌功能,如果觉得阴道痕痒的话,也可以用完美芦荟胶擦一下,再配合完美沐浴露一起用很快就会不痒的了;

4、完美芦荟胶是一种高纯度的芦荟凝胶,必要时牙痛可含食;

5、每天出门前,涂在手和脸上,(要加点水,这样会更容易吸收)会有防晒作用,不会被阳光直接晒伤,有保护作用;

6、修复受伤的细胞如:意外伤(割伤、擦伤、烫伤),若没有破口就用手的暗劲按摩使得皮肤发热,若用破口就先清洗后再涂上芦荟胶。

7、完美芦荟胶还有防辐射功能,在您上网前用水稀释芦荟胶涂到脸部;

8、如果蚊虫叮咬后,可清洁皮肤后直接或用水稀释一下芦荟胶涂到感染处,有杀菌消炎的作用。

【注意事项】置于阴凉干燥处,避免阳光直接照射。敏感肌肤者慎用。

1、完美公司生产的芦荟胶凝胶清滢透澈;伪劣假冒的芦荟胶在放置一段时间后,胶体将变得很稀,颜色发黄,甚至有酸臭味。

2、完美公司生产的芦荟胶具有芦荟特有的清香,芦荟胶清香味比较浓,甚至有一点辣辣的刺鼻的感觉,闻一闻就会有明显的感觉;可以挤一点放在嘴里先有一种芦荟的甘苦的味道,过后会有一点点甜甜的滋味;伪劣假冒的芦荟胶则只有明显的化妆品的香精味或味道很淡或根本没有味道。

3、完美公司生产的芦荟胶封口铝膜,在撕开后不可再粘回,伪劣假冒的芦荟胶封口铝膜在撕开后还可以再粘回。

4、完美公司生产的芦荟胶,正品瓶嘴处有一圈热压痕迹,由于生产工艺问题,热压痕迹会有深浅的差别。

5、完美芦荟胶有两个生产基地,扬州和中山出品的都是正品芦荟胶。

6、完美公司生产的芦荟胶,生产时间都会精准到“分”和“秒”,同一生产基地的芦荟胶每支生产时间都是有秒数差异的,一般间隔1-2秒,如果生产时间全部相同的就不是正品。(两只才能比较出来,建议买时同时看两只的生产时间,一般间隔1-2秒,如下图蓝色圆圈的是假冒的,显示相同时间)

7、在瓶盖周边有圈银色的圈环,假的用指甲很容易刮落,正品是无法刮落的。建议买时,当着老板的面拆开并用指甲刮一下,看是否容易脱落。

8、再次建议到专柜购买,近期发现高校周边有店铺售卖假冒产品,当心上当。

9、我们安排快递送货上门时,请当场打开验收,验收后付款,不满意可当场拒收,以保护你的权益。长沙市内免费送货上门。

使用说明

1、如果有青春痘,那么洗脸后或你用器具清理里面的东西后将此凝胶抹在上面,早一次晚一次,一周后就有效果;

2、如果你的皮肤干性,那么一周两次用此做面膜,(用温热的水洗脸后抹一层厚一点的在脸上,半小时洗净再擦一层薄的)两周后,皱纹明显减少迹象,皮肤变白晰!这真的是好产品太好了;

3、完美芦荟胶还有杀菌功能,如果觉得阴道痕痒的话,也可以用完美芦荟胶擦一下,再配合完美沐浴露一起用很快就会不痒的了;

4、完美芦荟胶是一种高纯度的芦荟凝胶,必要时牙痛可含食;

5、每天出门前,涂在手和脸上,(要加点水,这样会更容易吸收)会有防晒作用,不会被阳光直接晒伤,有保护作用;

6、修复受伤的细胞如:意外伤(割伤、擦伤、烫伤),若没有破口就用手的暗劲按摩使得皮肤发热,若用破口就先清洗后再涂上芦荟胶。

。' ;

}

else

{

m_data = new char[strlen(str) + 1];

strcpy(m_data,str);

}

}

String::String(const String &another)

{

m_data = new char[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

String& String::operator =(const String &rhs)

{

if ( this == &rhs)

return *this ;

delete []m_data; //删除原来的数据,新开一块内存

m_data = new char[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

String::~String()

{

delete []m_data ;

}

13. .h头文件中的ifndef/define/endif 的作用?

答:防止该头文件被重复引用。

14. #i nclude<file.h> 与#i nclude "file.h"的区别?

答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

15.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。

通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern 声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的,来看看C++中对类似C的函数是怎样编译的:

作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:

void foo( int x, int y );

该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。

_foo_int_int 这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数void foo( int x, int y )与void foo( int x, float y )编译生成的符号是不相同的,后者为_foo_int_float。

同样地,C++中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全局变量名字不同。

未加extern "C"声明时的连接方式

假设在C++中,模块A的头文件如下:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

int foo( int x, int y );

#endif

在模块B中引用该函数:

// 模块B实现文件moduleB.cpp

#i nclude "moduleA.h"

foo(2,3);

实际上,在连接阶段,连接器会从模块A生成的目标文件moduleA.obj中寻找_foo_int_int 这样的符号!

加extern "C"声明后的编译和连接方式

加extern "C"声明后,模块A的头文件变为:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

extern "C" int foo( int x, int y );

#endif

在模块B的实现文件中仍然调用foo( 2,3 ),其结果是:

(1)模块A编译生成foo的目标代码时,没有对其名字进行特殊处理,采用了C语言的方式;

(2)连接器在为模块B的目标代码寻找foo(2,3)调用时,寻找的是未经修改的符号名_foo。如果在模块A中函数声明了foo为extern "C"类型,而模块B中包含的是extern int foo( int x, int y ) ,则模块B找不到模块A中的函数;反之亦然。

所以,可以用一句话概括extern “C”这个声明的真实目的(任何语言中的任何语法特性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入地理解许多问题):实现C++与C及其它语言的混合编程。

明白了C++中extern "C"的设立动机,我们下面来具体分析extern "C"通常的使用技巧: extern "C"的惯用法

(1)在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:

extern "C"

{

#i nclude "cExample.h"

}

而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。

C++引用C函数例子工程中包含的三个文件的源代码如下:

/* c语言头文件:cExample.h */

#ifndef C_EXAMPLE_H

#define C_EXAMPLE_H

extern int add(int x,int y);

#endif

/* c语言实现文件:cExample.c */

#i nclude "cExample.h"

int add( int x, int y )

{

return x + y;

}

// c++实现文件,调用add:cppFile.cpp

extern "C"

{

#i nclude "cExample.h"

}

int main(int argc, char* argv[])

{

add(2,3);

return 0;

}

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" {}。

(2)在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C 语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

C引用C++函数例子工程中包含的三个文件的源代码如下:

//C++头文件cppExample.h

#ifndef CPP_EXAMPLE_H

#define CPP_EXAMPLE_H

extern "C" int add( int x, int y );

#endif

//C++实现文件cppExample.cpp

#i nclude "cppExample.h"

int add( int x, int y )

{

return x + y;

}

/* C实现文件cFile.c

/* 这样会编译出错:#i nclude "cExample.h" */

extern int add( int x, int y );

int main( int argc, char* argv[] )

{

add( 2, 3 );

return 0;

}

15题目的解答请参考《C++中extern “C”含义深层探索》注解:

16. 关联、聚合(Aggregation)以及组合(Composition)的区别?

涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就

是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:

从实现的角度讲,聚合可以表示为:

class A {...} class B { A* a; .....}

而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系:

实现的形式是:

class A{...} class B{ A a; ...}

参考文章:http://blog.csdn.net/wfwd/archive/2006/05/30/763753.aspx

http://blog.csdn.net/wfwd/archive/2006/05/30/763760.aspx

17.面向对象的三个基本特征,并简单叙述之?

1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)

2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

18. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义复类虚函数的方法。

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

19. 多态的作用?

主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

20. Ado与Ado.net的相同与不同?

除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.NET 体系不同于COM 体系, ADO.NET 接口也就完全不同于ADO和OLE DB 接口,这也就是说ADO.NET 和ADO是

两种数据访问方式。ADO.net 提供对XML 的支持。

21. New delete 与malloc free 的联系与区别?

答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

22. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5);i 是多少?

答案:i 为30。

23. 有哪几种情况只能用intialization list 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

24. C++是不是类型安全的?

答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

25. main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行。

26. 描述内存分配方式以及它们的区别?

1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。

3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

27.struct 和class 的区别

答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和class 在其他方面是功能相当的。

从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用struct 关键字,否则,你应该使用class 关键字。

28.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)

答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。

29. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)

答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。

30. 比较C++中的4种类型转换方式?

请参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763785.aspx,重点是static_cast, dynamic_cast和reinterpret_cast的区别和应用。

31.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

答案:

BOOL : if ( !a ) or if(a)

int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001

if ( a < EXP && a >-EXP)

pointer : if ( a != NULL) or if(a == NULL)

32.请说出const与#define 相比,有何优点?

答案:1)const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

2)有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。33.简述数组与指针的区别?

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。

(1)修改内容上的差别

char a[] = “hello”;

a[0] = …X‟;

char *p = “world”; // 注意p 指向常量字符串

p[0] = ‘X’; // 编译器不能发现该错误,运行时错误

(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

char a[] = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 字节

cout<< sizeof(p) << endl; // 4 字节

计算数组和指针的内存容量

void Func(char a[100])

{

cout<< sizeof(a) << endl; // 4 字节而不是100 字节

}

34.类成员函数的重载、覆盖和隐藏区别?

答案:

a.成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual 关键字可有可无。

b.覆盖是指派生类函数覆盖基类函数,特征是:

(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual关键字。

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,

基类的函数将被隐藏(注意别与重载混淆)。

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

35. There are two int va riables: a and b, don‟t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.

答案:( ( a + b ) + abs( a - b ) ) / 2

36. 如何打印出当前源文件的文件名以及源文件的当前行号?

答案:

cout << __FILE__ ;

cout<<__LINE__ ;

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);

void main( void )

{

String str("zhanglin");

_onexit( fn1 );

_onexit( fn2 );

_onexit( fn3 );

_onexit( fn4 );

printf( "This is executed first.\n" );

}

int fn1()

{

printf( "next.\n" );

return 0;

}

int fn2()

{

printf( "executed " );

return 0;

}

int fn3()

{

printf( "is " );

return 0;

}

int fn4()

{

printf( "This " );

return 0;

}

The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.

38. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

答案:

#ifdef __cplusplus

cout<<"c++";

#else

cout<<"c";

#endif

39.文件中有一组整数,要求排序后输出到另一个文件中

答案:

#i nclude<iostream>

#i nclude<fstream>

using namespace std;

void Order(vector<int>& data) //bubble sort

{

int count = data.size() ;

int tag = false ; // 设置是否需要继续冒泡的标志位

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

{

for ( int j = 0 ; j < count - i - 1 ; j++)

{

if ( data[j] > data[j+1])

{

tag = true ;

int temp = data[j] ;

data[j] = data[j+1] ;

data[j+1] = temp ;

}

}

if ( !tag )

break ;

}

}

void main( void )

{

vector<int>data;

ifstream in("c:\data.txt");

if ( !in)

{

cout<<"file error!";

exit(1);

}

int temp;

while (!in.eof())

{

in>>temp;

data.push_back(temp);

}

in.close(); //关闭输入文件流

Order(data);

ofstream out("c:\result.txt");

if ( !out)

{

cout<<"file error!";

exit(1);

}

for ( i = 0 ; i < data.size() ; i++)

out<<data[i]<<" ";

out.close(); //关闭输出文件流

}

40. 链表题:一个链表的结点结构

struct Node

{

int data ;

Node *next ;

};

typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表逆序( Intel) Node * ReverseList(Node *head) //链表逆序

{

if ( head == NULL || head->next == NULL )

return head;

Node *p1 = head ;

Node *p2 = p1->next ;

Node *p3 = p2->next ;

p1->next = NULL ;

while ( p3 != NULL )

{

p2->next = p1 ;

p1 = p2 ;

p2 = p3 ;

p3 = p3->next ;

}

p2->next = p1 ;

head = p2 ;

return head ;

}

(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)

Node * Merge(Node *head1 , Node *head2)

{

if ( head1 == NULL)

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

Node *p1 = NULL;

Node *p2 = NULL;

if ( head1->data < head2->data )

{

head = head1 ;

p1 = head1->next;

p2 = head2 ;

}

else

{

head = head2 ;

p2 = head2->next ;

p1 = head1 ;

}

Node *pcurrent = head ;

while ( p1 != NULL && p2 != NULL)

{

if ( p1->data <= p2->data )

{

pcurrent->next = p1 ;

pcurrent = p1 ;

p1 = p1->next ;

}

else

{

pcurrent->next = p2 ;

pcurrent = p2 ;

p2 = p2->next ;

}

}

if ( p1 != NULL )

pcurrent->next = p1 ;

if ( p2 != NULL )

pcurrent->next = p2 ;

return head ;

}

(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)

答案:

Node * MergeRecursive(Node *head1 , Node *head2)

{

if ( head1 == NULL )

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

if ( head1->data < head2->data )

{

head = head1 ;

head->next = MergeRecursive(head1->next,head2);

}

else

{

head = head2 ;

head->next = MergeRecursive(head1,head2->next);

}

return head ;

}

41. 分析一下这段程序的输出(Autodesk)

class B

{

public:

B()

{

cout<<"default constructor"<<endl;

}

~B()

{

cout<<"destructed"<<endl;

}

B(int i):data(i) //B(int) works as a converter ( int -> instance of B)

{

cout<<"constructed by parameter " << data <<endl;

}

private:

int data;

};

B Play( B b)

{

return b ;

}

(1) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(t1); destructed t1形参析构

return 0;destructed t2注意顺序! } destructed t1

(2) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(10); constructed by parameter 10 return 0;destructed B(10)形参析构} destructed t2注意顺序!

destructed t1

42. 写一个函数找出一个整数数组中,第二大的数(microsoft)答案:

const int MINNUMBER = -32767 ;

int find_sec_max( int data[] , int count)

{

int maxnumber = data[0] ;

int sec_max = MINNUMBER ;

for ( int i = 1 ; i < count ; i++)

{

if ( data[i] > maxnumber )

{

sec_max = maxnumber ;

maxnumber = data[i] ;

}

else

{

if ( data[i] > sec_max )

sec_max = data[i] ;

}

}

return sec_max ;

}

43. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

KMP算法效率最好,时间复杂度是O(n+m)。

44. 多重继承的内存分配问题:

比如有class A : public class B, public class C {}

那么A的内存结构大致是怎么样的?

这个是compiler-dependent的, 不同的实现其细节可能不同。

如果不考虑有虚函数、虚继承的话就相当简单;否则的话,相当复杂。

可以参考《深入探索C++对象模型》,或者:

http://blog.csdn.net/wfwd/archive/2006/05/30/763797.aspx

45. 如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针) struct node { char val; node* next;}

bool check(const node* head) {} //return false : 无环;true: 有环

一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):

bool check(const node* head)

{

if(head==NULL) return false;

node *low=head, *fast=head->next;

while(fast!=NULL && fast->next!=NULL)

{

low=low->next;

fast=fast->next->next;

if(low==fast) return true;

}

return false;

}

1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age, 在些链表中删除学生年龄等于age的学生信息。

程序代码

#i nclude "stdio.h"

#i nclude "conio.h"

struct stu{

char name[20];

char sex;

int no;

int age;

struct stu * next;

}*linklist;

struct stu *creatlist(int n)

{

int i;

//h为头结点,p为前一结点,s为当前结点

struct stu *h,*p,*s;

h = (struct stu *)malloc(sizeof(struct stu));

h->next = NULL;

p=h;

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

{

s = (struct stu *)malloc(sizeof(struct stu));

p->next = s;

printf("Please input the information of the student: name sex no age n");

scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);

s->next = NULL;

访问固定的内存位置(Accessing fixed memory locations)C C++ Development

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

一个较晦涩的方法是:

*(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

中断(Interrupts)

11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius)

{

double area = PI * radius * radius;

printf(" Area = %f", area);

return area;

}

这个函数有太多的错误了,以至让人不知从何说起了:

1). ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。

2). ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。

3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。

4). 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。代码例子(Code examples)

12 . 下面的代码输出是什么,为什么?

void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b > 6) puts("> 6") : puts("<= 6");

}

这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

13. 评价下面的代码片断:

unsigned int zero = 0;

unsigned int compzero = 0xFFFF;

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。

到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧…

动态内存分配(Dynamic memory allocation)

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输出是什么,为什么?

char *ptr;

if ((ptr = (char *)malloc(0)) == NULL)

puts("Got a null pointer");

else

puts("Got a valid pointer");

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

#define dPS struct s *

typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。哪种方法更好呢? (如果有的话)为什么?

这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是: typedef更好。思考下面的例子:

dPS p1,p2;

tPS p3,p4;

第一个扩展为

struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

晦涩的语法

16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

int a = 5, b = 7, c;

c = a+++b;

这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:

c = a++ + b;

因此, 这段代码持行后a = 6, b = 7, c = 12。

如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是:这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题

What will print out?

main()

{

char *p1=“name”;

char *p2;

p2=(char*)malloc(20);

memset (p2, 0, 20);

while(*p2++ = *p1++);

printf(“%sn”,p2);

}

Answer:empty string.

What will be printed as the result of the operation below: main()

{

int x=20,y=35;

x=y++ + x++;

y= ++y + ++x;

printf(“%d%dn”,x,y);

}

Answer : 5794

What will be printed as the result of the operation below: main()

{

int x=5;

printf(“%d,%d,%dn”,x,x< <2,x>>2);

}

Answer: 5,20,1

What will be printed as the result of the operation below: #define swap(a,b) a=a+b;b=a-b;a=a-b;

void main()

{

int x=5, y=10;

swap (x,y);

printf(“%d %dn”,x,y);

swap2(x,y);

printf(“%d %dn”,x,y);

}

int swap2(int a, int b)

{

int temp;

temp=a;

b=a;

a=temp;

return 0;

}

Answer: 10, 5

10, 5

What will be printed as the result of the operation below: main()

{

char *ptr = ” Cisco Systems”;

*ptr++; printf(“%sn”,ptr);

ptr++;

printf(“%sn”,ptr);

}

Answer:Cisco Systems

isco systems

What will be printed as the result of the operation below:

main()

{

char s1[]=“Cisco”;

char s2[]= “systems”;

printf(“%s”,s1);

}

Answer: Cisco

What will be printed as the result of the operation below:

main()

{

char *p1;

char *p2;

p1=(char *)malloc(25);

p2=(char *)malloc(25);

strcpy(p1,”Cisco”);

strcpy(p2,“systems”);

strcat(p1,p2);

printf(“%s”,p1);

}

Answer: Ciscosystems

The following variable is available in file1.c, who can access it?: static int average;

Answer: all the functions in the file1.c can access the variable. WHat will be the result of the following code?

#define TRUE 0 // some code

while(TRUE)

{

// some code

}

Answer: This will not go into the loop as TRUE is defined as 0. What will be printed as the result of the operation below:

int x;

int modifyvalue()

{

return(x+=10);

}

int changevalue(int x)

{

return(x+=1);

}

void main()

{

int x=10;

x++;

changevalue(x);

x++;

modifyvalue();

printf("First output:%dn",x);

x++;

changevalue(x);

printf("Second output:%dn",x);

modifyvalue();

printf("Third output:%dn",x);

}

Answer: 12 , 13 , 13

What will be printed as the result of the operation below:

main()

{

int x=10, y=15;

x = x++;

y = ++y;

printf(“%d %dn”,x,y);

}

Answer: 11, 16

What will be printed as the result of the operation below:

main()

{

int a=0;

if(a==0)

printf(“Cisco Systemsn”);

printf(“Cisco Systemsn”);

}

Answer: Two lines with “Cisco Systems” will be printed.

1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

2.将一个1M -10M 的文件,逆序存储到另一个文件,就是前一个文件的最后一个

字符存到新文件的第一个字符,以此类推。

3.main主函数执行完毕后,是否可能会再执行一段代码?

4.一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?

在子类的空间里,有没有父类的这个函数,或者父类的私有变量?

5.给一个字符串、例如“ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。

用C/C++语言写一函数完成该算法,给出复杂度

6.对序列1、1、2、3、5、8、13。。是Fab..数列

2、3、5、13...是Fab..质数数列,因为他们与自己前面的Fab...数列都互质

给出k,返回第k小的Fab..质数

7.101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。

8.完成字符串拷贝可以使用sprintf、strcpy 及memcpy 函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?

9.变量的声明和定义有什么区别?

10.请写出下面代码在32 位平台上的运行结果,并说明sizeof 的性质:

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

char a[30];

char *b = (char *)malloc(20 * sizeof(char));

printf("%d\n", sizeof(a));

printf("%d\n", sizeof(b));

printf("%d\n", sizeof(a[3]));

printf("%d\n", sizeof(b+3));

printf("%d\n", sizeof(*(b+4)));

return 0 ;

}

12.请完成以下题目。注意,请勿直接调用ANSI C 函数库中的函数实现。

a)请编写一个C 函数,该函数给出一个字节中被置1 的位的个数,并请

给出该题的至少一个不同解法。

b)请编写一个C 函数,该函数将给定的一个字符串转换成整数。

c)请编写一个C 函数,该函数将给定的一个整数转换成字符串。

d)请编写一个C 函数,该函数将一个字符串逆序。

e)请编写一个C 函数,该函数在给定的内存区域搜索给定的字符,并返回

该字符所在位置索引值。

f)请编写一个C 函数,该函数在一个字符串中找到可能的最长的子字符串,

该字符串是由同一字符组成的。

给出演示上述函数功能的一个简单程序,并请编写对应的Makefile 文件

13.我们需要编写一个图形相关的应用程序,需要处理大量图形(Shape)信息,

图形有矩形(Rectangle),正方形(Square),圆形(Circle)等种类,应用

需要计算这些图形的面积,并且可能需要在某个设备上进行显示(使用在标准

输出上打印信息的方式做为示意)。

a)请用面向对象的方法对以上应用进行设计,编写可能需要的类

b)请给出实现以上应用功能的示例性代码,从某处获取图形信息,

并且进行计算和绘制

c)如果你的Square继承自Rectangle,请给出理由,如果不是,

请给出理由,并且请比较两种方式的优劣

d)请问你所编写的类,在如下代码中会有何表现,请解释

void test_rectangle_area(Rectangle& r)

{

r.set_width(10);

r.set_height(15);

assert(r.area() == 150);

}

14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节点不是尾节点,试编程实现删除此节点

15.写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)

16.编写一个Identify的分配、释放的函数,为1-10000之间的自然数。

17.分别实现itoa和atoi.

18.Consider the following code:

#include <stdio.h>

#include <string.h>

int main(int argc, char *argv[]) {

int i = 1;

char buf[4];

strcpy(buf, "AAAA");

printf("%d\n", i);

return 0;

}

a) When compiled and executed on x86, why does this program usually not

output what the programmer intended?

b) Name several ways in which the security problem that causes this

program not to output what the programmer intended can be prevented

WITHOUT changing the code.

19.int w=1,x=2,y=3,z=4;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(m<2)?m:z;

printf("m=%d",m); 说出结果

20.说出结果

#include <stdio.h>

main()

{

FILE *fp;

int i,a[4]={1,2,3,4},b;

fp=fopen("data.dat","wb");//这里帮忙解释一下

for(i=0;i<4;i++)

fwrite(&a[i],sizeof(int),1,fp);//这里也帮忙看一下

fclose(fp);

fp=fopen("data.dat","rb");

fseek(fp,-2L*sizeof(int),SEEK_END);//还有这里

fread(&b,sizeof(int),1,fp);//这里还有也看一下

fclose(fp);

printf("b=%d\n",b);

}

21.有双向循环链表结点:

typedef struct node

{

int date;

struct node *front,*next;

}_Node;

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中date值相同的结点删除

22.

char * GetStr()

{

char *tmp;

tmp = "123"

return tmp;

}

void main()

{

printf("%s", GetStr());

}

会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的?

23.

字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?类ClassB从ClassA派生,那么ClassA *a = new ClassB(…); 试问该表达是否合法?为什么?如果ClassA中定义并实现虚函数int func(void),ClassB中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况又如何?为什么? char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?

如下所述的if else和switch语句哪个的效率高?为什么?

在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?

应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?

24.Assignment 2: Picture Processing

Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE to process a picture with a high resolution (3 Mega Pixels for example). Use some methodologies to degrade the resolution of the picture to make it quicker for browsing. Then divide the degraded picture into 9 sectors equally. Click any of the 9 sectors will result a detailed picture for this sector with the same resolution as that of the original picture. This assignment is designed for you to demonstrate your ability to handle pictures.

25.用<<,>>,|,&实现一个WORD(2个字节)的高低位交换!!

26.要开辟P1,P2,P3,P4内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的!

27.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)

28.找错:

#include <string.h>

#include <stdio.h>

class Base

{

private:

char * name;

public:

Base(char * className)

{

name = new char[strlen(className)];

strcpy(name, className);

}

~Base()

{

delete name;

}

char * copyName()

{

char newname [256];

strcpy(newname, name);

return newname;

}

char * getName()

{

return name;

}

static void print(Base base)

{

printf("name: %s\n" , base.name);

}

};

class Subclass : public Base

{

public:

Subclass(char * className) : Base(className)

{

}

};

int main()

{

Base * pBase = new Subclass("test");

Base::print(*pBase);

printf("name: %s\n", pBase->getName());

printf("new name: %s\n", pBase->copyName());

return 0;

}

29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回.

30.编写一个函数将一条字符串分成两部分,将前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变,)最后再将前后两部分交换,然后将该字符串输出,

测试字符串“ADZDDJKJFIEJHGI”

31.找错

V oid test1()

{

char string[10];

char* str1="0123456789";

strcpy(string, str1);

}

V oid test2()

{

char string[10], str1[10]; for(I=0; I<10;I++)

{

str1[i] ='a';

}

strcpy(string, str1);

}

V oid test3(char* str1)

{

char string[10];

if(strlen(str1)<=10) {

strcpy(string, str1);

}

}

32. 找错

#define MAX_SRM 256

DSN get_SRM_no()

{

static int SRM_no;

int I;

for(I=0;I{

SRM_no %= MAX_SRM;

if(MY_SRM.state==IDLE) {

break;

}

}

if(I>=MAX_SRM)

return (NULL_SRM);

else

return SRM_no;

}

33. 写出程序运行结果

int sum(int a)

{

auto int c=0;

static int b=3;

c+=1;

b+=2;

return(a+b+C);

}

void main()

{

int I;

int a=2;

for(I=0;I<5;I++)

{

printf("%d,", sum(a)); }

}

34.

int func(int a)

{

int b;

switch(a)

{

case 1: 30;

case 2: 20;

case 3: 16;

default: 0

}

return b;

}

则func(1)=?

35:

int a[3];

a[0]=0; a[1]=1; a[2]=2;

int *p, *q;

p=a;

q=&a[2];

则a[q-p]=?

36.

定义int **a[3][4], 则变量占有的内存空间为:_____

37.

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

38.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)

我只知道是用递推,大概写了一下,如下:

int IsTwoPow(int s)

{

if(s==1)return FALSE;

s=s>>1;

if(s>1)IsTwoPow(s);

return (s==1)?TRUE:FALSE;//大概是这个意思,但是这一句似乎不该这么返回!

}

39 A,B从一堆玻璃球(共100个)里向外拿球,规则如下:

(1)A先拿,然后一人一次交替着拿;

(2)每次只能拿1个或2个或4个;

(3)谁拿最后一个球,谁就是最后的失败者;

问A,B谁将是失败者?写出你的判断步骤。

40.已知:无序数组,折半查找,各元素值唯一。

函数原型是:Binary_Seach(int array[], int iValue, int iCount)

array是数组,在里面用折半查找的方法找等于iValue的值,找到返回1否则0,iCount是元素个数

41.统计一个字符串中字符出现的次数

42.100位以上的超大整数的加法(主要考虑数据结构和加法的实现)。

43.对如下电文:"CASTCASTSATATATASA"给出Huffman编码。

44.int (* (*f)(int, int))(int)表示什么含义?

45.x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。

46.中缀表达式A-(B+C/D)*E的后缀形式是什么?

47.struct S1

{

char c;

int i;

};

sizeof(S1) = ?

class X{

public:

X();

virtual ~X();

void myMemberFunc();

static void myStaticFunc();

virtual void myVirtualFunc();

private:

int i;

char * pstr;

char a;

}

sizeof(X) = ?

48.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"

49.有一百个整数,其中有负数,找出连续三个数之和最大的部分.

50.写一程序实现快速排序. 假设数据输入为一文件

快速算法描述如下

Algorithm Partition

Input: sequence a0, ..., an-1 with n elements

Output: permutation of the sequence such that all elements a0, ..., aj are less than or equal to all elements ai, ..., an-1 (i > j)

Method:

choose the element in the middle of the sequence as comparison element x

let i = 0 and j = n-1

while ij

search the first element ai which is greater than or equal to x

search the last element aj which is less than or equal to x

if ij

exchange ai and aj

let i = i+1 and j = j-1

After partitioning the sequence, Quicksort treats the two parts recursively by the same procedure. The recursion ends whenever a part consists of one element only.

51.写一算法检测单向链表中是否存在环(whether there is a loop in a link list),

要求算法复杂度(Algorithm's complexity是O(n)) 并只使用常数空间(space is O(c)).

注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构.

52.设下列函数已经通过了调试

bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray);

该函数在内存中排序,能把字节数最大为100M字节的ArrayType类型的数组排序。其中ArrayType是一个

预定义的数组类型(细节无关紧要),Pinputarray,Poutarray分别为排序前的指针和排序后的指针。

请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务:

输入:排序前的大文件,名称为char * pinoutfilename ,其内容为用分号分隔的ArrayType

类型的数组元素,可装满4个100M字节的数组。

输出:排序后的大文件char * poutoutfilename。

53.用最有效率的方法算出2乘以8等於几?

54.

1.错误的转义字符是(c)

A.'1'

B.'\'

C.'

相信自己“本应从医”的川普,频频对新冠疫情发表“高见”,不但连累医学专家们忙着反驳,还让一对老夫妇轻信了他的“安利”误服药物。

“请不要听从一个直接看日食的男人的医疗建议。”3月25日,川普的老对手希拉里在推特写下这样一句话。

希拉里推特截图希拉里推特截图

虽然没有指名道姓,但美媒一眼看出,这个人就是川普。

“政客”网站:希拉里嘲笑川普……

NBC:希拉里嘲笑川普……

美国在2017年8月曾出现日食现象,当时川普一度在没有佩戴护目镜的情况下,直接仰望天空,后来在助手的提醒下才带上护目镜。

社交媒体截图社交媒体截图

曾被美国网民疯狂吐槽的一幕,如今也成了希拉里嘲讽川普“业余”的梗。

自新冠疫情爆发以来,川普领导的美国政府因反应迟缓、抗疫不力饱受抨击,但他又偏偏喜欢在公众面前满嘴“跑火车”。

79岁的美国顶级传染病专家安东尼·福奇(Anthony Fauci)日前就冲着权威学术期刊——《科学》大吐苦水,直言即使川普乱说话,自己也无法“跳到麦克风前把他推下去”。

最近,川普还极力推荐两种在美国尚未进行抗新冠病毒临床实验的抗疟疾药物。他19日先是声称氯喹在治疗新冠肺炎方面显示出“非常令人鼓舞的早期效果”,但随即遭到美国食品药品监督管理局(FDA)反驳,食品药品监督管理局局长史蒂夫·哈恩更直言“要给人希望,但不是错误的希望。”

20日,川普再次“热情推销”相关药物,与他同场的福奇却告诉记者:“你所引用的信息是传闻,它未经临床对照实验的验证,所以你不能下定论。”

虽然专家接连对川普的说法纠错,但还是有老年人听了总统的推荐,不幸误服用于清洁鱼缸的氯喹添加剂,导致一人死亡,一人被送入重症监护室。

“每个医生都说,‘你怎么懂那么多’,也许我有一种天生的能力。也许我该那么做(去从医),而不是竞选总统”。3月6日访问美国疾控中心(CDC)时,川普曾自信满满地吹嘘道。

20天过后,美国累计确诊病例已从当初的不到500例,飙升至目前的逾55000例。

截至美东时间3月25日凌晨美国新冠疫情情况 图源:约翰斯·霍普金斯大学新冠实时数据

'

D.'\''

2.若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)

A.数组的长度

B.数组第一个元素的值

C.数组所有元素的值

D.数组第一个元素的地址

3.变量的指针含意是指变量的(b)

A.值

B.地址

C.存储

D.名字

5.某文件中定义的静态全局变量(或称静态外部变量)其作用域是(d)

A.只限某个函数

B.本文件

C.跨文件

D.不限制作用域

55.

1. 解二次方程:a*x*x+b*x+c

int Quadratic( double a,double b,double c,double& x1,double& x2);

返回值:解的个数

2. 最大公约数

DWORD Divisor( DWORD dwFirst, DWORD dwSecond );

返回值:最大公约数

3. 根据蒙特卡洛算法计算圆周率

double PI( DOWRD dwCount/*测试次数*/ );

返回值:PI

4. 无符号整数乘法,乘数为32bit,结果为64bit

提示:32bit整数分解为16bit相乘

void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );

5. 链表排序(从小到大)

节点定义为:

struct Node{

int nValue;

struct Node* pNext;

};

最后一个节点的pNext = NULL. Node* SortChain( Node* pHead ); 返回值:链表头

。

公安基础练习题及答案(一):公安机关的性质、职能和宗旨

一、练习题(一)判断题

1.生产力的发展、私有制的产生,是警察产生的经济条件。()

2.阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的政治条件。()

X阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的阶级条件。

3.维护统治秩序与惩罚犯罪的客观需要,是警察产生的阶级条件。()

X维护统治秩序与惩罚犯罪的客观需要,是警察产生的社会条件。

4.国家机器的形成,是警察产生的政治条件。()

5.在奴隶社会、封建社会中,没有专门的警察机关,也没有专职的警察队伍。()

6,在奴隶社会和封建社会中执行警察职能的机构与官吏,称为古代警察。()

7.在奴隶社会、封建社会中,警察的职能是由军队、审判机关和行政官吏分别掌管的。()

8.古代警察的特点之一是军警不分,警政合一。()

9.古代警察行使职权,在法律上是极不严格的,神权、皇帝或长官的意志起决定作用。()

10.近代警察只是适应资本主义制度需要而建立起来的专门执行警察职能的机构[]。()

X近代警察是适应资本主义制度需要而建立起来的专门执行警察职能的机构和官吏。

11.警察在世界各国有不同的含义,在我国警察是具有武装性质的维护社会秩序、保卫国家安全的国家行政力量。()

12.在我国,警察的任务是维护社会秩序,保卫国家安全。()

13.警察的性质是具有武装性质的国家治安行政力量。()

14.世界各国都拥有自己的警察力量,有的国家甚至不设军队,但都建有自己的警察机构,设置专职的警察力量。()

15.警察是一个历史范畴,是人类社会一定历史阶段上的产物。()

16.警察和警察机关不是从来就有的,也不是永世长存的,它随着国家的产生而产生,也必将随着国家的消亡而消亡。()

17.在人类社会的历史阶段中,原始社会没有警察。()

18.警察是国家中执行专政职能的工具。()

19.决定警察必要性的直接因素是由社会矛盾引起的犯罪、对抗冲突和社会秩序问题。()

20.警察虽然随着国家的产生而产生,但是警察同国家不一样,它不是阶级矛盾不可调和的产物。()

X警察随着国家的产生而产生,警察同国家一样,也是阶级矛盾不可调和的产物。

21.近代警察发端于西欧,是资本主义发展的产物。()

22.建立近代警察制度较早的国家是法国和英国。()

23.近代警察是社会生产力迅速发展和社会分工日益细密的必然结果。()

24.1789年法国资产阶级革命后建立了保安官制度,即实行了资产阶级共和国的警察制度。()

25.英国在中世纪就建有治安法官制度。()

26.1829年英国通过了《警察法》,并由罗伯特·庇尔建立了首都伦敦警察厅。()

27.世界各国警察,受英、法两国警察制度的影响,形成了两种不同的警政管理体制:地方自治制和中央集权制。()

28.地方自治警政管理体制以法国为代表。()

X地方自治警政管理体制以英国为代表。

29.中央集权制警政管理体制以英国为代表。()

X中央集权制警政管理体制以法国为代表。

30.在地方自治警政管理体制中,警察受地方政府领导,中央政府只起监督作用。()

31.在中央集权制警政管理体制中,警察由中央政府统一领导。()

32.近代警察的管理体制的形成主要受美、法两国警察制度的影响。()

X近代警察的管理体制的形成主要受英、法两国警察制度的影响。

33.中国的近代警察是帝国主义入侵中国之后的产物。()

34.1898年,湖南巡抚陈宝箴在长沙成立“湖南保卫局”,这是中国历史上最早的专职警察机构。()

35.1905年,清政府在北京设立“巡警部”,这是清政府的中央警察机关。()

36.中国历史上第一个全国性的专职警察机构是1898年在长沙成立“湖南保卫局”。()

X中国历史上第一个全国性的专职警察机构是1905年清政府在北京设立的“巡警部”。

37.1912年,中华民国成立后,南京临时政府将“巡捕”和“巡警”改为警察。()

38.1927年,蒋介石设立“内政部警政司”,把各省、市、县的警察机关改为“警察局”。()

X1927年,蒋介石设立“内政部警政司”,把各省、市、县的警察机关改为“公安局”。

39.1946年,蒋介石政权设立“内政部警察总署”,将各省、市、县警察机关改为“公安局”。().

X1946年,蒋介石政权设立“内政部警察总署”,将各省、市、县警察机关改为“警察局”。

40.旧中国近代警察的历史,是军警特结合在一起,镇压革命、迫害人民的历史。()

41.警察的职能是否集中于一个统一的警察机关是近代警察与古代警察的区别之一。()

42.近代警察的职能是独立的,警察职能主要集中于警察机关。()

43.近代警察从中央到地方形成专职的警察队伍,成为国家庞大的专政工具之一,行使专门职权。()

44.近代警察机关的建立及其体制和职权,均以宪法或法律为依据。古代警察执法极不严格,私刑普遍存在。()

45.近代警察与古代警察都有专门的统一的制式服装。()

X近代警察有统一的制式服装,古代警察则没有专门的服装。

46.警察在本质上是国家政权中按照统治阶级意志,依靠暴力的、强制的、特殊的手段维护国家安全与社会秩序的武装性质的行政力量。()

47.社会主义国家和资本主义国家的警察的本质是一样的。()

X社会主义国家和资本主义国家的警察的本质是不一样的。

48.警察的本质特征是具有鲜明的阶级性、手段的特殊性和广泛的社会性。()

49.警察是国家机器的重要组成部分,是阶级专政的重要工具,必须与国体一致,必须与政体一致。()

50.警察机关为了完成法律赋予自己的职责,保障强制力的权威性,配有一定的武器和械具,是一支重要的具有武装性质的行政力量。()

51.警察所担负的任务十分广泛,一方面,作为阶级专政的工具,具有鲜明的阶级性;另一方面,担负着大量的社会管理任务,要为社会提供全面的治安保障,具有广泛的社会性。()

52.警察的职能,是指警察的社会效能和作用。()

53.国家的职能决定了警察的职能。()

54.警察是国家实行阶级专政的工具,是国家管理社会的司法机构。()

X警察是国家实行阶级专政的工具,是国家管理社会的行政机构。

55.警察具有阶级性和社会性相统一的特点。()

56.警察的基本职能包括政治镇压职能和社会管理职能。()

57.警察的阶级性表现在它的政治镇压职能上。()

58.警察的社会性表现在它的社会管理职能上。()

59.政治镇压职能,是指警察使用暴力,对威胁统治阶级的政治统治与国家安全的政治势力实行镇压。()

60.警察的政治镇压职能具有广泛的社会性和群众性。()

X警察的政治镇压职能具有鲜明的政治性和强烈的阶级性。

61.社会管理职能,是指警察运用行政管理的手段,维护一定社会:会制度下的社会秩序。()

62.警察的社会管理职能具有鲜明的政治性和强烈的阶级性。()

X警察的社会管理职能具有广泛的社会性和群众性。

63.警察的政治镇压职能和警察社会管理职能都是统治阶级意志的体现,两者相互依存,相辅相成。()

64.警察的政治镇压职能是社会管理职能的前提。()

65.警察的社会管理职能是政治镇压职能的基础。()

66.警察的政治镇压职能和警察社会管理职能处于同等地位。()

X警察的政治镇压职能和警察的社会管理职能并非处于同等地位,政治镇压职能通常置于首要地位。

67.为了确保党中央的安全,1927年12月在周恩来主持的中央特委的直接领导下,北京建立了中央特科。()

X为了确保党中央的安全,1927年12月在周恩来主持的中央特委的直接领导下,上海建立了中央特科。

68.中央特科是中国共产党在中央机关设立的最早的保卫组织。()

69.1931年11月,以原来的苏区中央局保卫处为基础,组建了国家政治保卫局。()

70.国家政治保卫局是我国最早的人民政权的公安保卫机关。()

71.1938年5月成立了西安市警察队,简称“边警”。()

X1938年5月成立了延安市警察队,全称“陕甘宁边区人民警察”,简称“边警”。

72.“陕甘宁边区人民警察”是我国历史上最早的一支比较正规的人民警察队伍。()

73.1939年2月,中央决定在党的高级组织内成立社会部,下设侦查、治安、情报、干部保卫和中央警卫团等机构。()

74.1949年7月,中央决定在华北社会部和华北公安部的基础上组建中央军委公安部。()

75.1949年11月1日,中华人民共和国公安部正式成立。()

76.1949年10月1日,中央人民政府委员会任命罗瑞卿为中华人民共和国中央人民政府公安部部长。()

X1949年10月9日,中央人民政府委员会任命罗瑞卿为中华人民共和国中央人民政府公安部部长。

77.1949年10月15日召开第一次全国公安会议,研究解决了统一全国公安组织机构和公安机关的工作任务问题。()

78.1995年10月,江泽民总书记为济南交警题词“严格执法,热情服务”。()

79.周永康部长指出:“在新世纪、新阶段,公安机关必须切实担负起巩固共产党执政地位,维护国家长治久安,保障人民安居乐业的重大政治和社会责任。”()

80.公安机关是人民民主专政的重要工具,这是公安机关的阶级属性,也是它的根本属性。()

81.公安机关是人民民主专政的重要工具,它表明了公安机关的阶级本质,是公安机关性质的核心内容和本质特征。()

82.罗瑞卿部长曾指出:“国家安危,公安系于一半。”()

X周恩来曾指出:“国家安危,公安系于一半。”

83.在人民当家做主的人民民主专政国家,公安机关是依据广大人民群众的意志建立的,忠实地执行人民的意志、国家的意志。()

84.在人民当家做主的人民民主专政国家,公安机关以国家赋予公安机关的任务为公安工作的总根据、总目标,以国家政策和法律为全部活动的依据。()

85.社会主义国家公安机关与剥削阶级国家警察机关都是维护统治阶级的利益。()

X社会主义国家公安机关与剥削阶级国家警察机关所维护的阶级利益不同,人民警察是维护工人阶级和广大人民群众最根本、最长远利益的,剥削阶级警察是维护剥削阶级利益的。

86.社会主义国家公安机关与剥削阶级国家警察机关在专政对象上不同。()

87.社会主义国家公安机关与剥削阶级国家警察机关在专政的目的是相同的。()

X社会主义国家公安机关与剥削阶级国家警察机关在专政的目的上是不同的。

88.社会主义国家公安机关与剥削阶级国家警察机关在同人民群众的关系上是不同的。()

89.公安机关只是我国国家的治安行政机关。()

X公安机关是我国国家的治安行政机关和刑事执法机关。

90.警察与军队的分工不同,警察的职能主要是对内,军队的职能主要是对外。()

91.我国公安机关的基本职能是专政职能[]。()

X我国公安机关的基本职能是专政职能和民主职能。

92.我国公安机关的专政职能是专门用以对付敌对势力、敌对分子和严重刑事犯罪分子的。()

93.公安机关的民主职能,是指公安机关依法保护人民的民主权利和其他合法权益的社会效能。()

94.公安机关专政职能是民主职能的社会基础,民主职能是专政职能的基本保障。()

X公安机关专政职能是民主职能的基本保障,民主职能是专政职能的社会基础。

95.公安机关专政职能与民主职能在对象和方法上不同。()

96.我国《人民警察法》中明确表明我国公安机关的宗旨是全心全意为人民服务。()

97.公安机关对人民负责,受人民监督。()

98.人民群众满意不满意、赞成不赞成、答应不答应,是衡量公安工作的最高标准。()

99.人民群众的支持,是公安工作最大的经济优势,是做好公安工作的根本保证。()

X人民群众的支持,是公安工作最大的政治优势,是做好公安工作的根本保证。

100.全心全意为人民服务,一个最基本的要求就是要坚持一切从人民群众的根本利益出发。()

二)单项选择题

1.建立近代警察制度较早的国家是()

A.中国和法国B.法国和美国C.法国和英国D.美国和英国

2.近代,地方自治制的警察管理体制的代表国家是()

A.英国B.法国C.美国D.都不是

3.近代,中央集权制的警察管理体制的代表国家是()

A。英国B.法国C.美国D.德国

4.中国的近代警察建立在()

A.明朝末期B。清朝前期C.清朝中期D.帝国主义入侵中国之后

5.中国历史上最早的专职警察机构是()年建立的。

A.1898B.1905C.1895D.1907

6.中国历史上第一个全国性的专职警察机构是清朝的()

A.“巡警部”B.“警务学堂”C..“巡警局”D。“巡警学校”

7.清政府的中央警察机关是()

A.“巡警部”B.“警务学堂”C.“巡警局”D,“巡警学校”

8.在中国历史上,将“巡捕”和“巡警”改为警察的是()

A.清政府B.南京临时政府C。蒋介石D.新中国

9.旧中国近代警察的历史,是()结合在一起,镇压革命、迫害人民的历史。

A.军警B.军特C.军警特D.军警和司法机关

10.以下关于近代警察与古代警察的区别正确的有()

A.古代警察的职能是独立的,近代警察的职能尚未能集中于一个统一的专门机关

B.近代警察没有专门的组织,古代警察有专职的警察队伍

C.近代警察机关的建立及其体制和职权均以宪法或法律为依据

D.近代警察没有统一的制式服装,古代警察则有专门的服装

11.警察是具有()性质的维护社会秩序、保卫国家安全的国家行政力量。

A.阶级斗争B.治安C.暴力D.武装

12.警察随着()的产生而产生,也必将随着()的消亡而消亡。

A.阶级B.国家C.政党D.行政机关

13.从警察起源上看()

A.原始社会也有警察

B.警察是一个历史范畴

C.警察是先于国家的产生而产生的

D.国家是先于警察的产生而产生的

14.决定警察必要性的直接因素是()

A.国家性质

B.阶级矛盾

C.社会各阶级力量的对比

D.社会矛盾引起的犯罪、对抗冲突和社会秩序问题

15.生产力的发展、私有制的产生,是警察产生的()

A.政治条件B.文化条件C.经济条件D.社会条件

16.阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的()

A.政治条件B.经济条件C.阶级条件D.文化条件

17.维护统治秩序与惩罚犯罪的客观需要,是警察产生的()

A.经济条件B.政治条件C.文化条件D.社会条件

18.警察产生的政治条件是()

A.维护统治秩序与惩罚犯罪的客观需要

B.国家机器的形成

C.阶级矛盾和统治阶级内部矛盾的不可调和性

D.社会矛盾引起的犯罪、对抗冲突和社会秩序问题

19.在奴隶社会、封建社会中()

A.有专职的警察队伍B.有专门的警察机关C.没有专门的警察机关D.没有类似警察的职能机构

20.近代警察是资本主义发展的产物,发端于()

A.法国B.美国C.英国D.西欧

21.下列有关警察本质的表述正确的有()

A.世界各国警察在本质上是共同的

B.世界各国的警察在本质上是不同的

C.世界各国警察在本质上既有相同点,也有不同点

D.世界各国警察在本质上没有可比性

22.下列叙述正确的有()

A.警察必须与国体一致

B.警察必须与政体一致

C.警察必须与国体一致,必须与政体一致

D.警察独立于国体和政体之外

23.警察的基本职能包括()

A.政治镇压职能和社会管理职能

B.经济管理职能和文化职能

C.社会管理职能和社会文化职能

D.政治镇压职能和经济管理职能

24.警察使用暴力,对威胁统治阶级的政治统治与国家安全的政治势力实行镇压属于警察的()职能。

A.经济管理B.社会文化C.政治镇压D.社会管理

25.警察运用行政管理的手段,维护一定社会制度下的社会秩序,属于警察的()职能。

A.社会文化B.经济管理C.政治镇压D.社会管理

26.警察的政治镇压职能和社会管理职能的关系是()

A.相互依存,相辅相成

B.同等重要,相互矛盾

C.主从关系,社会管理职能为主,政治镇压职能为辅

D.同等重要,辩证统一

27.中国共产党在中央机关设立的最早的保卫组织是()

A.“巡警部”B.社会部C.国家政治保卫局D.中央特科

28.我国最早的人民政权的公安保卫机关是()

A.“巡警部”B.社会部C.国家政治保卫局D,中央特科

29.我国历史上最早的一支比较正规的人民警察队伍是()

A.1905年设立的“巡警部”

B.1927年设立的中央特科

C.1938年5月成立的延安市警察队

D.1939年设立的社会部

30.中华人民共和国公安部正式成立的时间是()

A.1949年10月1日B.1949年10月9日C.1949年11月1日D.1949年12月1日

31.1949年10月9R中央人民政府委员会任命()为首任中华人民共和国公安部部长。

A.罗瑞卿B.杨奇清C.谢富治D.陈毅

32.1995年10月,()为济南交警题词“严格执法,热情服务”。

A.邓小平B.胡耀邦C.江泽民D.胡锦涛

33.1995年10月,江泽民总书记为济南交警的题词是()

A.“以阶级斗争为纲”

B.“从严治警、依法治警”

C.“严格执法,热情服务”

D.“抓班子、带队伍、促工作、保平安”

34.在我国,公安机关的阶级属性是。

【侨报记者逸清5月20日洛杉矶报道】美国大多数禁止或严格限制堕胎的州法律都是由男性政客投票通过的。男性是否对一个与女性关系如此密切的问题与女性意见相反? 

据VOX报道,堕胎的合法性从根本上讲,是一个妇女的权利和身体自主权的问题。问题并不在于堕胎,而在于自由和控制。但很多人认为堕胎法律在很大程度上是由性别决定的。因为基于性别的意见分歧是全球政治的一个普遍特征,尤其是在美国。美国女性比男性更倾向于支持政府项目的扩大。 

2015年,Vox和Perry Undem合作开展了一个民意调查项目,试图捕捉美国在堕胎问题上的所有细微差别。其中一件事表明,美国人对诸如“支持生命”和“支持选择”这类宽泛词组的理解并不理解,甚至认为它们是相互排斥的。

在阿拉巴马州蒙哥马利,争取妇女权利的抗议者在阿拉巴马州国会大厦台阶上举行集会(图片来自:美联社)

研究还显示,男性和女性都认为自己支持堕胎,而女性认为自己支持堕胎的可能性略高于男性。

女性更倾向于认为堕胎在任何情况下都应该是合法的,但也更有可能认为堕胎永远不应该合法。

这听起来很奇怪,但皮尤的一项大型国际比较显示,各国有多少人认为堕胎“在所有或大多数情况下”应该是合法的。报告发现,在亚美尼亚和葡萄牙等少数几个国家,性别差异非常大,但更常见的情况是,女性对合法堕胎更友好,但只是非常轻微的友好。

有迹象表明,阶层不同,情况可能也有所不同。例如,令人吃惊的是,名义上支持堕胎权利的两名共和党参议员都是女性。 

男性和女性在其他事情上的分歧更大。例如,皮尤的调查显示,在政府是否应该提供更多的公共服务这一基本问题上,男性和女性之间存在长期的差距——这一差距近年来一直在扩大。

甚至在川普时期,人们对一个更大、更积极的政府是否可取的分歧不断扩大之前,性别差异就已经超过了与堕胎相关的问题所反映的性别差异。

从实际意义上讲,女性在经济政策和国家安全问题上更倾向于左翼,这意味着女性更有可能投票给民主党政客。由于民选官员在堕胎问题上倾向于比普通民众更极端的观点,这意味着在实践中,妇女的政治参与对堕胎的法律地位有很大的影响。但这并不是因为男性和女性在堕胎政策本身上存在任何特别大的分歧。

。

浅谈如何组建局域网及打印共享(图解)

首先,路由器的设置就不转了,更懒得写现在谈谈怎么用设置局域网互访开启SEVRER依次点开始—设置——控制面板——管理工具选中SEVRER看是否已经开启我们先确定我们所有的计算机是否在一个工作组,打开我的电脑属性选中计算机名就可以看到了如果不在同一个工作组内,我们就来设置一下打开网络邻居选择设置家庭或小型办公网络选下一步再选下一步在选择连接方法选择从通过居民区连接到INTERNET点下一步计算机描述随自已填,点下一步工作组一定要填一样的点下一步选择启用文件和打印机共享。下一步再选下一步选择完成向导,不需要在其它计算机上运行此向导添加协议选择网上邻居属性,再选择本地连接属性,选择安装,协议,NWLinkIPX/SPX/NetBIOSCompatibleTransportProtocol选择确定就可以了还有在本地连接属性里把MICROSOFT网络共享文件和打印机共享前面打勾开启Guest用户密码可以不设,这样可以只输入账号Guest,即可登录(互访)。但需要保证以下策略的开启 点击“开始→运行”并输入“gpedit.msc”,打开组策略。依次点击“计算机配置→Windows设置→安全设置→本地策略→安全选项”,找到“账户:使用空白密码的本地用户只允许进行控制台登录”。当启用时,就不能在远程用空密码访问,禁用它就可以了。解禁Guest  (1)打开组策略,依次点击“计算机配置→Windows设置→安全设置→本地策略→用户权利指派”,在“拒绝从网络访问这台计算机”项上双击,看有无Guest,如有请删除[/img]http://bbs.cfanhome.com/attachment/Mon_0705/15_19117_3ebdc09a414d0cb.jpg[/img]2)仍在上述组策略中,在“从网络访问此计算机”项上双击,看有无Guest,如无,请添加3)仍在组策略中,依次点击“计算机配置→Windows设置→安全设置→安全选项”,双击“网络访问:本地账号的共享和安全模式”,将默认设置“仅来宾→本地用户以来宾身份验证”,更改为“经典→本地用户以自己的身份验证”另外,如果只能看到WindowsXP电脑的文件目录,却不能进入文件夹。这是因为WindowsXP默认的是文件的简单共享方式,可进行修改:在“资源管理器”中,单击“工具→文件夹选项”,在“查看”选项卡中,将“高级设置”中的“使用简单文件共享(推荐)”前面的钩去掉即可.

[此贴被紫色铃兰草在2007-07-2321:49重新编辑]

。‟)

;

return tempptr ;

}

!!!!!!!!!!!!!!!!!!!!12. 已知String类定义如下:

class String

{

public:

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

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

~ String(); // 析构函数

String & operater =(const String &rhs); // 赋值函数

private:

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

};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)

{

if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断{

m_data = new char[1] ;

m_data[0] = '

相信自己“本应从医”的川普,频频对新冠疫情发表“高见”,不但连累医学专家们忙着反驳,还让一对老夫妇轻信了他的“安利”误服药物。

“请不要听从一个直接看日食的男人的医疗建议。”3月25日,川普的老对手希拉里在推特写下这样一句话。

希拉里推特截图希拉里推特截图

虽然没有指名道姓,但美媒一眼看出,这个人就是川普。

“政客”网站:希拉里嘲笑川普……

NBC:希拉里嘲笑川普……

美国在2017年8月曾出现日食现象,当时川普一度在没有佩戴护目镜的情况下,直接仰望天空,后来在助手的提醒下才带上护目镜。

社交媒体截图社交媒体截图

曾被美国网民疯狂吐槽的一幕,如今也成了希拉里嘲讽川普“业余”的梗。

自新冠疫情爆发以来,川普领导的美国政府因反应迟缓、抗疫不力饱受抨击,但他又偏偏喜欢在公众面前满嘴“跑火车”。

79岁的美国顶级传染病专家安东尼·福奇(Anthony Fauci)日前就冲着权威学术期刊——《科学》大吐苦水,直言即使川普乱说话,自己也无法“跳到麦克风前把他推下去”。

最近,川普还极力推荐两种在美国尚未进行抗新冠病毒临床实验的抗疟疾药物。他19日先是声称氯喹在治疗新冠肺炎方面显示出“非常令人鼓舞的早期效果”,但随即遭到美国食品药品监督管理局(FDA)反驳,食品药品监督管理局局长史蒂夫·哈恩更直言“要给人希望,但不是错误的希望。”

20日,川普再次“热情推销”相关药物,与他同场的福奇却告诉记者:“你所引用的信息是传闻,它未经临床对照实验的验证,所以你不能下定论。”

虽然专家接连对川普的说法纠错,但还是有老年人听了总统的推荐,不幸误服用于清洁鱼缸的氯喹添加剂,导致一人死亡,一人被送入重症监护室。

“每个医生都说,‘你怎么懂那么多’,也许我有一种天生的能力。也许我该那么做(去从医),而不是竞选总统”。3月6日访问美国疾控中心(CDC)时,川普曾自信满满地吹嘘道。

20天过后,美国累计确诊病例已从当初的不到500例,飙升至目前的逾55000例。

截至美东时间3月25日凌晨美国新冠疫情情况 图源:约翰斯·霍普金斯大学新冠实时数据

第六单元除法

第二课时参观花圃

教学内容:

课本第69--71页。

教学目标:

1、经历探索除数是两位数除法的计算过程,能把除数看作整十数进行试商。

2、能运用所学的方法解决简单的实际问题。

3、进一步感受数学与现实生活的密切联系。

教学重难点:

重点:掌握试商方法,学会验算。

难点:除数是接近整十数的笔算在实际生活中的运用。

教学准备:

课件。

教学过程:

一、情境导入

1、绿色植物是我们的好朋友,平时,看书时间长了,眼睛觉得很累,但

只要看看绿色的植物,就能消除眼睛的疲劳,给人以舒适的感觉。今

天老师就和小朋友一块去参观苗圃,那里种有很多的绿色植物。

2、出示主题图,引导学生观察。

二、自主学习、解决问题

1、欣赏了那么多漂亮的植物,你现在了解到苗圃的基本情况了吗?

学生汇报观察的收获。

花圃里有154盆牡丹花和120盆月季花;

可以用牡丹花摆22个小花坛;

用18盆月季花可以摆成三角形图案。

平均每个小花坛有多少盆牡丹花?

月季花可以摆几个三角形图案?还剩几盆?

你能列出算式吗?

学生试着列出算式:154÷22 120÷18

能估计一下第一个算式的答案吗?说说你是怎样估计的。

学生交流。

汇报:

1:22比15大,商在个位上,是一位数。

2:22≈20,20×7=140,20×8=160,140<154<160,所以可能是7盆。

3:154≈140,22≈20,154÷22≈7。

用除法竖式你会吗?先自己试一试。

小组间交流你们的计算方法,说清楚你们小组是怎么想的?可以上台板书你们的竖式。

(明确:试商的时候,把22看作20,把154看作是150,20×7=140,最接近150,所以商7。)

说说你的想法和算法。你会验算吗?

试算120÷18,必须思考清楚这几个问题:

①该把18看成多少试商?

②应该商几?商写在哪里?为什么?

③商“6”是乘18,还是乘20?为什么?

④这一竖式与上一竖式有何区别?怎样知道对错?

⑤如何检验?(用求得的商乘除数,看结果是否与被除数相等。)

学生演示计算。

教师归纳算法:用“四舍五入”法,把除数看作整十数进行试商,有余数的要验算。(引导学生通过比较进行归纳)

今天同学们在参观花圃的过程中遇到了问题,并自己探索解决了问题,学会了除数是两位数的除法,下面咱们就来练一练,比一比。说一说:你把除数当作几来试商?

70÷31= 381÷54=

272÷28= 89÷22=

把31当作30。

把54当作50。

把28当作30。

把22当作20。

好的,你们再结合187÷36,和同伴说说试商和计算的过程。

【设计意图:结合具体情境,让学生认识到除数是接近整十数的计算方法和特点。在探求的过程中,让学生多交流、多讨论、多总结,加深对知识点的理解和掌握。】

三、精讲点拨、趣味练习

今天同学们在参观苗圃的过程中遇到了问题,并自己探索解决了问题,学会了2位数的除法,下面咱们就来练一练,比一比,看你可以获得几星级?

1、说说你把除数当作几来试商?(一颗星)

70÷31= 159÷28=

381÷54= 351÷47=

2、最大能填几?(二颗星)

38 ×()< 243 42 ×( ) < 213

61×( ) < 441 59 ×( ) < 481

3、完成练一练第8他。(4颗星)

四、课堂总结:

今天这节课,你有什么收获?说给你的小伙伴听听吧。

学生试说,教师适时补充。

【设计意图:通过老师的“多问”,来带动学生的“深思”,促使学生在理解的基础上,灵活掌握算理与算法,提高计算的正确率。】

五、作业布置:

完成练一练第3、4、5、7题。

板书设计:

参观花圃

154÷22=7(盆)

教学反思:

计算教学,只有算理理解了,学生才能掌握计算方法,提高计算的正确率,也才能运用计算去解决生活中的问题。因为学生已有《买文具》一课的基础,学习了除数是整十数的除法,所以在本节课中,主要是放手让学生自己来探究。而在学生探究的过程中,特别关注学生的错例,并把这些错例展示出来,让学生来评议。学生在课堂中出现的错误都是有一定原因的,学生在对错例的评议过程中,弄清了错误的原因,从而避免了课堂暴露的问题转移到课后。在计算过程中,同学会考虑把除数换成是整十的数,但是没有同学想到把被除数也换成整十、整百的数进行计算,而我也没有及时提出这个问题让学生明确,这是本节课的一个失误。对于这个失误,我在课后及时进行了补救。

。' ;

}

else

{

m_data = new char[strlen(str) + 1];

strcpy(m_data,str);

}

}

String::String(const String &another)

{

m_data = new char[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

String& String::operator =(const String &rhs)

{

if ( this == &rhs)

return *this ;

delete []m_data; //删除原来的数据,新开一块内存

m_data = new char[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

String::~String()

{

delete []m_data ;

}

13. .h头文件中的ifndef/define/endif 的作用?

答:防止该头文件被重复引用。

14. #i nclude<file.h> 与#i nclude "file.h"的区别?

答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

15.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。

通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern 声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的,来看看C++中对类似C的函数是怎样编译的:

作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:

void foo( int x, int y );

该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。

_foo_int_int 这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数void foo( int x, int y )与void foo( int x, float y )编译生成的符号是不相同的,后者为_foo_int_float。

同样地,C++中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全局变量名字不同。

未加extern "C"声明时的连接方式

假设在C++中,模块A的头文件如下:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

int foo( int x, int y );

#endif

在模块B中引用该函数:

// 模块B实现文件moduleB.cpp

#i nclude "moduleA.h"

foo(2,3);

实际上,在连接阶段,连接器会从模块A生成的目标文件moduleA.obj中寻找_foo_int_int 这样的符号!

加extern "C"声明后的编译和连接方式

加extern "C"声明后,模块A的头文件变为:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

extern "C" int foo( int x, int y );

#endif

在模块B的实现文件中仍然调用foo( 2,3 ),其结果是:

(1)模块A编译生成foo的目标代码时,没有对其名字进行特殊处理,采用了C语言的方式;

(2)连接器在为模块B的目标代码寻找foo(2,3)调用时,寻找的是未经修改的符号名_foo。如果在模块A中函数声明了foo为extern "C"类型,而模块B中包含的是extern int foo( int x, int y ) ,则模块B找不到模块A中的函数;反之亦然。

所以,可以用一句话概括extern “C”这个声明的真实目的(任何语言中的任何语法特性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入地理解许多问题):实现C++与C及其它语言的混合编程。

明白了C++中extern "C"的设立动机,我们下面来具体分析extern "C"通常的使用技巧: extern "C"的惯用法

(1)在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:

extern "C"

{

#i nclude "cExample.h"

}

而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。

C++引用C函数例子工程中包含的三个文件的源代码如下:

/* c语言头文件:cExample.h */

#ifndef C_EXAMPLE_H

#define C_EXAMPLE_H

extern int add(int x,int y);

#endif

/* c语言实现文件:cExample.c */

#i nclude "cExample.h"

int add( int x, int y )

{

return x + y;

}

// c++实现文件,调用add:cppFile.cpp

extern "C"

{

#i nclude "cExample.h"

}

int main(int argc, char* argv[])

{

add(2,3);

return 0;

}

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" {}。

(2)在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C 语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

C引用C++函数例子工程中包含的三个文件的源代码如下:

//C++头文件cppExample.h

#ifndef CPP_EXAMPLE_H

#define CPP_EXAMPLE_H

extern "C" int add( int x, int y );

#endif

//C++实现文件cppExample.cpp

#i nclude "cppExample.h"

int add( int x, int y )

{

return x + y;

}

/* C实现文件cFile.c

/* 这样会编译出错:#i nclude "cExample.h" */

extern int add( int x, int y );

int main( int argc, char* argv[] )

{

add( 2, 3 );

return 0;

}

15题目的解答请参考《C++中extern “C”含义深层探索》注解:

16. 关联、聚合(Aggregation)以及组合(Composition)的区别?

涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就

是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:

从实现的角度讲,聚合可以表示为:

class A {...} class B { A* a; .....}

而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系:

实现的形式是:

class A{...} class B{ A a; ...}

参考文章:http://blog.csdn.net/wfwd/archive/2006/05/30/763753.aspx

http://blog.csdn.net/wfwd/archive/2006/05/30/763760.aspx

17.面向对象的三个基本特征,并简单叙述之?

1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)

2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

18. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义复类虚函数的方法。

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

19. 多态的作用?

主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

20. Ado与Ado.net的相同与不同?

除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.NET 体系不同于COM 体系, ADO.NET 接口也就完全不同于ADO和OLE DB 接口,这也就是说ADO.NET 和ADO是

两种数据访问方式。ADO.net 提供对XML 的支持。

21. New delete 与malloc free 的联系与区别?

答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

22. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5);i 是多少?

答案:i 为30。

23. 有哪几种情况只能用intialization list 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

24. C++是不是类型安全的?

答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

25. main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行。

26. 描述内存分配方式以及它们的区别?

1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。

3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

27.struct 和class 的区别

答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和class 在其他方面是功能相当的。

从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用struct 关键字,否则,你应该使用class 关键字。

28.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)

答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。

29. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)

答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。

30. 比较C++中的4种类型转换方式?

请参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763785.aspx,重点是static_cast, dynamic_cast和reinterpret_cast的区别和应用。

31.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

答案:

BOOL : if ( !a ) or if(a)

int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001

if ( a < EXP && a >-EXP)

pointer : if ( a != NULL) or if(a == NULL)

32.请说出const与#define 相比,有何优点?

答案:1)const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

2)有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。33.简述数组与指针的区别?

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。

(1)修改内容上的差别

char a[] = “hello”;

a[0] = …X‟;

char *p = “world”; // 注意p 指向常量字符串

p[0] = ‘X’; // 编译器不能发现该错误,运行时错误

(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

char a[] = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 字节

cout<< sizeof(p) << endl; // 4 字节

计算数组和指针的内存容量

void Func(char a[100])

{

cout<< sizeof(a) << endl; // 4 字节而不是100 字节

}

34.类成员函数的重载、覆盖和隐藏区别?

答案:

a.成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual 关键字可有可无。

b.覆盖是指派生类函数覆盖基类函数,特征是:

(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual关键字。

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,

基类的函数将被隐藏(注意别与重载混淆)。

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

35. There are two int va riables: a and b, don‟t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.

答案:( ( a + b ) + abs( a - b ) ) / 2

36. 如何打印出当前源文件的文件名以及源文件的当前行号?

答案:

cout << __FILE__ ;

cout<<__LINE__ ;

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);

void main( void )

{

String str("zhanglin");

_onexit( fn1 );

_onexit( fn2 );

_onexit( fn3 );

_onexit( fn4 );

printf( "This is executed first.\n" );

}

int fn1()

{

printf( "next.\n" );

return 0;

}

int fn2()

{

printf( "executed " );

return 0;

}

int fn3()

{

printf( "is " );

return 0;

}

int fn4()

{

printf( "This " );

return 0;

}

The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.

38. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

答案:

#ifdef __cplusplus

cout<<"c++";

#else

cout<<"c";

#endif

39.文件中有一组整数,要求排序后输出到另一个文件中

答案:

#i nclude<iostream>

#i nclude<fstream>

using namespace std;

void Order(vector<int>& data) //bubble sort

{

int count = data.size() ;

int tag = false ; // 设置是否需要继续冒泡的标志位

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

{

for ( int j = 0 ; j < count - i - 1 ; j++)

{

if ( data[j] > data[j+1])

{

tag = true ;

int temp = data[j] ;

data[j] = data[j+1] ;

data[j+1] = temp ;

}

}

if ( !tag )

break ;

}

}

void main( void )

{

vector<int>data;

ifstream in("c:\data.txt");

if ( !in)

{

cout<<"file error!";

exit(1);

}

int temp;

while (!in.eof())

{

in>>temp;

data.push_back(temp);

}

in.close(); //关闭输入文件流

Order(data);

ofstream out("c:\result.txt");

if ( !out)

{

cout<<"file error!";

exit(1);

}

for ( i = 0 ; i < data.size() ; i++)

out<<data[i]<<" ";

out.close(); //关闭输出文件流

}

40. 链表题:一个链表的结点结构

struct Node

{

int data ;

Node *next ;

};

typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表逆序( Intel) Node * ReverseList(Node *head) //链表逆序

{

if ( head == NULL || head->next == NULL )

return head;

Node *p1 = head ;

Node *p2 = p1->next ;

Node *p3 = p2->next ;

p1->next = NULL ;

while ( p3 != NULL )

{

p2->next = p1 ;

p1 = p2 ;

p2 = p3 ;

p3 = p3->next ;

}

p2->next = p1 ;

head = p2 ;

return head ;

}

(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)

Node * Merge(Node *head1 , Node *head2)

{

if ( head1 == NULL)

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

Node *p1 = NULL;

Node *p2 = NULL;

if ( head1->data < head2->data )

{

head = head1 ;

p1 = head1->next;

p2 = head2 ;

}

else

{

head = head2 ;

p2 = head2->next ;

p1 = head1 ;

}

Node *pcurrent = head ;

while ( p1 != NULL && p2 != NULL)

{

if ( p1->data <= p2->data )

{

pcurrent->next = p1 ;

pcurrent = p1 ;

p1 = p1->next ;

}

else

{

pcurrent->next = p2 ;

pcurrent = p2 ;

p2 = p2->next ;

}

}

if ( p1 != NULL )

pcurrent->next = p1 ;

if ( p2 != NULL )

pcurrent->next = p2 ;

return head ;

}

(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)

答案:

Node * MergeRecursive(Node *head1 , Node *head2)

{

if ( head1 == NULL )

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

if ( head1->data < head2->data )

{

head = head1 ;

head->next = MergeRecursive(head1->next,head2);

}

else

{

head = head2 ;

head->next = MergeRecursive(head1,head2->next);

}

return head ;

}

41. 分析一下这段程序的输出(Autodesk)

class B

{

public:

B()

{

cout<<"default constructor"<<endl;

}

~B()

{

cout<<"destructed"<<endl;

}

B(int i):data(i) //B(int) works as a converter ( int -> instance of B)

{

cout<<"constructed by parameter " << data <<endl;

}

private:

int data;

};

B Play( B b)

{

return b ;

}

(1) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(t1); destructed t1形参析构

return 0;destructed t2注意顺序! } destructed t1

(2) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(10); constructed by parameter 10 return 0;destructed B(10)形参析构} destructed t2注意顺序!

destructed t1

42. 写一个函数找出一个整数数组中,第二大的数(microsoft)答案:

const int MINNUMBER = -32767 ;

int find_sec_max( int data[] , int count)

{

int maxnumber = data[0] ;

int sec_max = MINNUMBER ;

for ( int i = 1 ; i < count ; i++)

{

if ( data[i] > maxnumber )

{

sec_max = maxnumber ;

maxnumber = data[i] ;

}

else

{

if ( data[i] > sec_max )

sec_max = data[i] ;

}

}

return sec_max ;

}

43. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

KMP算法效率最好,时间复杂度是O(n+m)。

44. 多重继承的内存分配问题:

比如有class A : public class B, public class C {}

那么A的内存结构大致是怎么样的?

这个是compiler-dependent的, 不同的实现其细节可能不同。

如果不考虑有虚函数、虚继承的话就相当简单;否则的话,相当复杂。

可以参考《深入探索C++对象模型》,或者:

http://blog.csdn.net/wfwd/archive/2006/05/30/763797.aspx

45. 如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针) struct node { char val; node* next;}

bool check(const node* head) {} //return false : 无环;true: 有环

一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):

bool check(const node* head)

{

if(head==NULL) return false;

node *low=head, *fast=head->next;

while(fast!=NULL && fast->next!=NULL)

{

low=low->next;

fast=fast->next->next;

if(low==fast) return true;

}

return false;

}

1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age, 在些链表中删除学生年龄等于age的学生信息。

程序代码

#i nclude "stdio.h"

#i nclude "conio.h"

struct stu{

char name[20];

char sex;

int no;

int age;

struct stu * next;

}*linklist;

struct stu *creatlist(int n)

{

int i;

//h为头结点,p为前一结点,s为当前结点

struct stu *h,*p,*s;

h = (struct stu *)malloc(sizeof(struct stu));

h->next = NULL;

p=h;

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

{

s = (struct stu *)malloc(sizeof(struct stu));

p->next = s;

printf("Please input the information of the student: name sex no age n");

scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);

s->next = NULL;

访问固定的内存位置(Accessing fixed memory locations)C C++ Development

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

一个较晦涩的方法是:

*(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

中断(Interrupts)

11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius)

{

double area = PI * radius * radius;

printf(" Area = %f", area);

return area;

}

这个函数有太多的错误了,以至让人不知从何说起了:

1). ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。

2). ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。

3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。

4). 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。代码例子(Code examples)

12 . 下面的代码输出是什么,为什么?

void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b > 6) puts("> 6") : puts("<= 6");

}

这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

13. 评价下面的代码片断:

unsigned int zero = 0;

unsigned int compzero = 0xFFFF;

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。

到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧…

动态内存分配(Dynamic memory allocation)

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输出是什么,为什么?

char *ptr;

if ((ptr = (char *)malloc(0)) == NULL)

puts("Got a null pointer");

else

puts("Got a valid pointer");

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

#define dPS struct s *

typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。哪种方法更好呢? (如果有的话)为什么?

这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是: typedef更好。思考下面的例子:

dPS p1,p2;

tPS p3,p4;

第一个扩展为

struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

晦涩的语法

16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

int a = 5, b = 7, c;

c = a+++b;

这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:

c = a++ + b;

因此, 这段代码持行后a = 6, b = 7, c = 12。

如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是:这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题

What will print out?

main()

{

char *p1=“name”;

char *p2;

p2=(char*)malloc(20);

memset (p2, 0, 20);

while(*p2++ = *p1++);

printf(“%sn”,p2);

}

Answer:empty string.

What will be printed as the result of the operation below: main()

{

int x=20,y=35;

x=y++ + x++;

y= ++y + ++x;

printf(“%d%dn”,x,y);

}

Answer : 5794

What will be printed as the result of the operation below: main()

{

int x=5;

printf(“%d,%d,%dn”,x,x< <2,x>>2);

}

Answer: 5,20,1

What will be printed as the result of the operation below: #define swap(a,b) a=a+b;b=a-b;a=a-b;

void main()

{

int x=5, y=10;

swap (x,y);

printf(“%d %dn”,x,y);

swap2(x,y);

printf(“%d %dn”,x,y);

}

int swap2(int a, int b)

{

int temp;

temp=a;

b=a;

a=temp;

return 0;

}

Answer: 10, 5

10, 5

What will be printed as the result of the operation below: main()

{

char *ptr = ” Cisco Systems”;

*ptr++; printf(“%sn”,ptr);

ptr++;

printf(“%sn”,ptr);

}

Answer:Cisco Systems

isco systems

What will be printed as the result of the operation below:

main()

{

char s1[]=“Cisco”;

char s2[]= “systems”;

printf(“%s”,s1);

}

Answer: Cisco

What will be printed as the result of the operation below:

main()

{

char *p1;

char *p2;

p1=(char *)malloc(25);

p2=(char *)malloc(25);

strcpy(p1,”Cisco”);

strcpy(p2,“systems”);

strcat(p1,p2);

printf(“%s”,p1);

}

Answer: Ciscosystems

The following variable is available in file1.c, who can access it?: static int average;

Answer: all the functions in the file1.c can access the variable. WHat will be the result of the following code?

#define TRUE 0 // some code

while(TRUE)

{

// some code

}

Answer: This will not go into the loop as TRUE is defined as 0. What will be printed as the result of the operation below:

int x;

int modifyvalue()

{

return(x+=10);

}

int changevalue(int x)

{

return(x+=1);

}

void main()

{

int x=10;

x++;

changevalue(x);

x++;

modifyvalue();

printf("First output:%dn",x);

x++;

changevalue(x);

printf("Second output:%dn",x);

modifyvalue();

printf("Third output:%dn",x);

}

Answer: 12 , 13 , 13

What will be printed as the result of the operation below:

main()

{

int x=10, y=15;

x = x++;

y = ++y;

printf(“%d %dn”,x,y);

}

Answer: 11, 16

What will be printed as the result of the operation below:

main()

{

int a=0;

if(a==0)

printf(“Cisco Systemsn”);

printf(“Cisco Systemsn”);

}

Answer: Two lines with “Cisco Systems” will be printed.

1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

2.将一个1M -10M 的文件,逆序存储到另一个文件,就是前一个文件的最后一个

字符存到新文件的第一个字符,以此类推。

3.main主函数执行完毕后,是否可能会再执行一段代码?

4.一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?

在子类的空间里,有没有父类的这个函数,或者父类的私有变量?

5.给一个字符串、例如“ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。

用C/C++语言写一函数完成该算法,给出复杂度

6.对序列1、1、2、3、5、8、13。。是Fab..数列

2、3、5、13...是Fab..质数数列,因为他们与自己前面的Fab...数列都互质

给出k,返回第k小的Fab..质数

7.101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。

8.完成字符串拷贝可以使用sprintf、strcpy 及memcpy 函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?

9.变量的声明和定义有什么区别?

10.请写出下面代码在32 位平台上的运行结果,并说明sizeof 的性质:

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

char a[30];

char *b = (char *)malloc(20 * sizeof(char));

printf("%d\n", sizeof(a));

printf("%d\n", sizeof(b));

printf("%d\n", sizeof(a[3]));

printf("%d\n", sizeof(b+3));

printf("%d\n", sizeof(*(b+4)));

return 0 ;

}

12.请完成以下题目。注意,请勿直接调用ANSI C 函数库中的函数实现。

a)请编写一个C 函数,该函数给出一个字节中被置1 的位的个数,并请

给出该题的至少一个不同解法。

b)请编写一个C 函数,该函数将给定的一个字符串转换成整数。

c)请编写一个C 函数,该函数将给定的一个整数转换成字符串。

d)请编写一个C 函数,该函数将一个字符串逆序。

e)请编写一个C 函数,该函数在给定的内存区域搜索给定的字符,并返回

该字符所在位置索引值。

f)请编写一个C 函数,该函数在一个字符串中找到可能的最长的子字符串,

该字符串是由同一字符组成的。

给出演示上述函数功能的一个简单程序,并请编写对应的Makefile 文件

13.我们需要编写一个图形相关的应用程序,需要处理大量图形(Shape)信息,

图形有矩形(Rectangle),正方形(Square),圆形(Circle)等种类,应用

需要计算这些图形的面积,并且可能需要在某个设备上进行显示(使用在标准

输出上打印信息的方式做为示意)。

a)请用面向对象的方法对以上应用进行设计,编写可能需要的类

b)请给出实现以上应用功能的示例性代码,从某处获取图形信息,

并且进行计算和绘制

c)如果你的Square继承自Rectangle,请给出理由,如果不是,

请给出理由,并且请比较两种方式的优劣

d)请问你所编写的类,在如下代码中会有何表现,请解释

void test_rectangle_area(Rectangle& r)

{

r.set_width(10);

r.set_height(15);

assert(r.area() == 150);

}

14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节点不是尾节点,试编程实现删除此节点

15.写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)

16.编写一个Identify的分配、释放的函数,为1-10000之间的自然数。

17.分别实现itoa和atoi.

18.Consider the following code:

#include <stdio.h>

#include <string.h>

int main(int argc, char *argv[]) {

int i = 1;

char buf[4];

strcpy(buf, "AAAA");

printf("%d\n", i);

return 0;

}

a) When compiled and executed on x86, why does this program usually not

output what the programmer intended?

b) Name several ways in which the security problem that causes this

program not to output what the programmer intended can be prevented

WITHOUT changing the code.

19.int w=1,x=2,y=3,z=4;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(m<2)?m:z;

printf("m=%d",m); 说出结果

20.说出结果

#include <stdio.h>

main()

{

FILE *fp;

int i,a[4]={1,2,3,4},b;

fp=fopen("data.dat","wb");//这里帮忙解释一下

for(i=0;i<4;i++)

fwrite(&a[i],sizeof(int),1,fp);//这里也帮忙看一下

fclose(fp);

fp=fopen("data.dat","rb");

fseek(fp,-2L*sizeof(int),SEEK_END);//还有这里

fread(&b,sizeof(int),1,fp);//这里还有也看一下

fclose(fp);

printf("b=%d\n",b);

}

21.有双向循环链表结点:

typedef struct node

{

int date;

struct node *front,*next;

}_Node;

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中date值相同的结点删除

22.

char * GetStr()

{

char *tmp;

tmp = "123"

return tmp;

}

void main()

{

printf("%s", GetStr());

}

会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的?

23.

字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?类ClassB从ClassA派生,那么ClassA *a = new ClassB(…); 试问该表达是否合法?为什么?如果ClassA中定义并实现虚函数int func(void),ClassB中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况又如何?为什么? char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?

如下所述的if else和switch语句哪个的效率高?为什么?

在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?

应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?

24.Assignment 2: Picture Processing

Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE to process a picture with a high resolution (3 Mega Pixels for example). Use some methodologies to degrade the resolution of the picture to make it quicker for browsing. Then divide the degraded picture into 9 sectors equally. Click any of the 9 sectors will result a detailed picture for this sector with the same resolution as that of the original picture. This assignment is designed for you to demonstrate your ability to handle pictures.

25.用<<,>>,|,&实现一个WORD(2个字节)的高低位交换!!

26.要开辟P1,P2,P3,P4内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的!

27.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)

28.找错:

#include <string.h>

#include <stdio.h>

class Base

{

private:

char * name;

public:

Base(char * className)

{

name = new char[strlen(className)];

strcpy(name, className);

}

~Base()

{

delete name;

}

char * copyName()

{

char newname [256];

strcpy(newname, name);

return newname;

}

char * getName()

{

return name;

}

static void print(Base base)

{

printf("name: %s\n" , base.name);

}

};

class Subclass : public Base

{

public:

Subclass(char * className) : Base(className)

{

}

};

int main()

{

Base * pBase = new Subclass("test");

Base::print(*pBase);

printf("name: %s\n", pBase->getName());

printf("new name: %s\n", pBase->copyName());

return 0;

}

29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回.

30.编写一个函数将一条字符串分成两部分,将前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变,)最后再将前后两部分交换,然后将该字符串输出,

测试字符串“ADZDDJKJFIEJHGI”

31.找错

V oid test1()

{

char string[10];

char* str1="0123456789";

strcpy(string, str1);

}

V oid test2()

{

char string[10], str1[10]; for(I=0; I<10;I++)

{

str1[i] ='a';

}

strcpy(string, str1);

}

V oid test3(char* str1)

{

char string[10];

if(strlen(str1)<=10) {

strcpy(string, str1);

}

}

32. 找错

#define MAX_SRM 256

DSN get_SRM_no()

{

static int SRM_no;

int I;

for(I=0;I{

SRM_no %= MAX_SRM;

if(MY_SRM.state==IDLE) {

break;

}

}

if(I>=MAX_SRM)

return (NULL_SRM);

else

return SRM_no;

}

33. 写出程序运行结果

int sum(int a)

{

auto int c=0;

static int b=3;

c+=1;

b+=2;

return(a+b+C);

}

void main()

{

int I;

int a=2;

for(I=0;I<5;I++)

{

printf("%d,", sum(a)); }

}

34.

int func(int a)

{

int b;

switch(a)

{

case 1: 30;

case 2: 20;

case 3: 16;

default: 0

}

return b;

}

则func(1)=?

35:

int a[3];

a[0]=0; a[1]=1; a[2]=2;

int *p, *q;

p=a;

q=&a[2];

则a[q-p]=?

36.

定义int **a[3][4], 则变量占有的内存空间为:_____

37.

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

38.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)

我只知道是用递推,大概写了一下,如下:

int IsTwoPow(int s)

{

if(s==1)return FALSE;

s=s>>1;

if(s>1)IsTwoPow(s);

return (s==1)?TRUE:FALSE;//大概是这个意思,但是这一句似乎不该这么返回!

}

39 A,B从一堆玻璃球(共100个)里向外拿球,规则如下:

(1)A先拿,然后一人一次交替着拿;

(2)每次只能拿1个或2个或4个;

(3)谁拿最后一个球,谁就是最后的失败者;

问A,B谁将是失败者?写出你的判断步骤。

40.已知:无序数组,折半查找,各元素值唯一。

函数原型是:Binary_Seach(int array[], int iValue, int iCount)

array是数组,在里面用折半查找的方法找等于iValue的值,找到返回1否则0,iCount是元素个数

41.统计一个字符串中字符出现的次数

42.100位以上的超大整数的加法(主要考虑数据结构和加法的实现)。

43.对如下电文:"CASTCASTSATATATASA"给出Huffman编码。

44.int (* (*f)(int, int))(int)表示什么含义?

45.x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。

46.中缀表达式A-(B+C/D)*E的后缀形式是什么?

47.struct S1

{

char c;

int i;

};

sizeof(S1) = ?

class X{

public:

X();

virtual ~X();

void myMemberFunc();

static void myStaticFunc();

virtual void myVirtualFunc();

private:

int i;

char * pstr;

char a;

}

sizeof(X) = ?

48.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"

49.有一百个整数,其中有负数,找出连续三个数之和最大的部分.

50.写一程序实现快速排序. 假设数据输入为一文件

快速算法描述如下

Algorithm Partition

Input: sequence a0, ..., an-1 with n elements

Output: permutation of the sequence such that all elements a0, ..., aj are less than or equal to all elements ai, ..., an-1 (i > j)

Method:

choose the element in the middle of the sequence as comparison element x

let i = 0 and j = n-1

while ij

search the first element ai which is greater than or equal to x

search the last element aj which is less than or equal to x

if ij

exchange ai and aj

let i = i+1 and j = j-1

After partitioning the sequence, Quicksort treats the two parts recursively by the same procedure. The recursion ends whenever a part consists of one element only.

51.写一算法检测单向链表中是否存在环(whether there is a loop in a link list),

要求算法复杂度(Algorithm's complexity是O(n)) 并只使用常数空间(space is O(c)).

注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构.

52.设下列函数已经通过了调试

bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray);

该函数在内存中排序,能把字节数最大为100M字节的ArrayType类型的数组排序。其中ArrayType是一个

预定义的数组类型(细节无关紧要),Pinputarray,Poutarray分别为排序前的指针和排序后的指针。

请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务:

输入:排序前的大文件,名称为char * pinoutfilename ,其内容为用分号分隔的ArrayType

类型的数组元素,可装满4个100M字节的数组。

输出:排序后的大文件char * poutoutfilename。

53.用最有效率的方法算出2乘以8等於几?

54.

1.错误的转义字符是(c)

A.'1'

B.'\'

C.'

若角α与β的终边垂直,则α与β的关系是(  )

β=α+90°

β=α±90°

β=k•360°+α+90°,k∈ZD

1

β=k•360°+α±90°,k∈Z

正确答案

D

解答

解:若角α与β的终边垂直,则β-α=k•360°±90°,k∈Z,

∴β=k•360°+α±90°,k∈Z.

故选:D.

'

D.'\''

2.若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)

A.数组的长度

B.数组第一个元素的值

C.数组所有元素的值

D.数组第一个元素的地址

3.变量的指针含意是指变量的(b)

A.值

B.地址

C.存储

D.名字

5.某文件中定义的静态全局变量(或称静态外部变量)其作用域是(d)

A.只限某个函数

B.本文件

C.跨文件

D.不限制作用域

55.

1. 解二次方程:a*x*x+b*x+c

int Quadratic( double a,double b,double c,double& x1,double& x2);

返回值:解的个数

2. 最大公约数

DWORD Divisor( DWORD dwFirst, DWORD dwSecond );

返回值:最大公约数

3. 根据蒙特卡洛算法计算圆周率

double PI( DOWRD dwCount/*测试次数*/ );

返回值:PI

4. 无符号整数乘法,乘数为32bit,结果为64bit

提示:32bit整数分解为16bit相乘

void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );

5. 链表排序(从小到大)

节点定义为:

struct Node{

int nValue;

struct Node* pNext;

};

最后一个节点的pNext = NULL. Node* SortChain( Node* pHead ); 返回值:链表头

。

公安基础练习题及答案(一):公安机关的性质、职能和宗旨

一、练习题(一)判断题

1.生产力的发展、私有制的产生,是警察产生的经济条件。()

2.阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的政治条件。()

X阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的阶级条件。

3.维护统治秩序与惩罚犯罪的客观需要,是警察产生的阶级条件。()

X维护统治秩序与惩罚犯罪的客观需要,是警察产生的社会条件。

4.国家机器的形成,是警察产生的政治条件。()

5.在奴隶社会、封建社会中,没有专门的警察机关,也没有专职的警察队伍。()

6,在奴隶社会和封建社会中执行警察职能的机构与官吏,称为古代警察。()

7.在奴隶社会、封建社会中,警察的职能是由军队、审判机关和行政官吏分别掌管的。()

8.古代警察的特点之一是军警不分,警政合一。()

9.古代警察行使职权,在法律上是极不严格的,神权、皇帝或长官的意志起决定作用。()

10.近代警察只是适应资本主义制度需要而建立起来的专门执行警察职能的机构[]。()

X近代警察是适应资本主义制度需要而建立起来的专门执行警察职能的机构和官吏。

11.警察在世界各国有不同的含义,在我国警察是具有武装性质的维护社会秩序、保卫国家安全的国家行政力量。()

12.在我国,警察的任务是维护社会秩序,保卫国家安全。()

13.警察的性质是具有武装性质的国家治安行政力量。()

14.世界各国都拥有自己的警察力量,有的国家甚至不设军队,但都建有自己的警察机构,设置专职的警察力量。()

15.警察是一个历史范畴,是人类社会一定历史阶段上的产物。()

16.警察和警察机关不是从来就有的,也不是永世长存的,它随着国家的产生而产生,也必将随着国家的消亡而消亡。()

17.在人类社会的历史阶段中,原始社会没有警察。()

18.警察是国家中执行专政职能的工具。()

19.决定警察必要性的直接因素是由社会矛盾引起的犯罪、对抗冲突和社会秩序问题。()

20.警察虽然随着国家的产生而产生,但是警察同国家不一样,它不是阶级矛盾不可调和的产物。()

X警察随着国家的产生而产生,警察同国家一样,也是阶级矛盾不可调和的产物。

21.近代警察发端于西欧,是资本主义发展的产物。()

22.建立近代警察制度较早的国家是法国和英国。()

23.近代警察是社会生产力迅速发展和社会分工日益细密的必然结果。()

24.1789年法国资产阶级革命后建立了保安官制度,即实行了资产阶级共和国的警察制度。()

25.英国在中世纪就建有治安法官制度。()

26.1829年英国通过了《警察法》,并由罗伯特·庇尔建立了首都伦敦警察厅。()

27.世界各国警察,受英、法两国警察制度的影响,形成了两种不同的警政管理体制:地方自治制和中央集权制。()

28.地方自治警政管理体制以法国为代表。()

X地方自治警政管理体制以英国为代表。

29.中央集权制警政管理体制以英国为代表。()

X中央集权制警政管理体制以法国为代表。

30.在地方自治警政管理体制中,警察受地方政府领导,中央政府只起监督作用。()

31.在中央集权制警政管理体制中,警察由中央政府统一领导。()

32.近代警察的管理体制的形成主要受美、法两国警察制度的影响。()

X近代警察的管理体制的形成主要受英、法两国警察制度的影响。

33.中国的近代警察是帝国主义入侵中国之后的产物。()

34.1898年,湖南巡抚陈宝箴在长沙成立“湖南保卫局”,这是中国历史上最早的专职警察机构。()

35.1905年,清政府在北京设立“巡警部”,这是清政府的中央警察机关。()

36.中国历史上第一个全国性的专职警察机构是1898年在长沙成立“湖南保卫局”。()

X中国历史上第一个全国性的专职警察机构是1905年清政府在北京设立的“巡警部”。

37.1912年,中华民国成立后,南京临时政府将“巡捕”和“巡警”改为警察。()

38.1927年,蒋介石设立“内政部警政司”,把各省、市、县的警察机关改为“警察局”。()

X1927年,蒋介石设立“内政部警政司”,把各省、市、县的警察机关改为“公安局”。

39.1946年,蒋介石政权设立“内政部警察总署”,将各省、市、县警察机关改为“公安局”。().

X1946年,蒋介石政权设立“内政部警察总署”,将各省、市、县警察机关改为“警察局”。

40.旧中国近代警察的历史,是军警特结合在一起,镇压革命、迫害人民的历史。()

41.警察的职能是否集中于一个统一的警察机关是近代警察与古代警察的区别之一。()

42.近代警察的职能是独立的,警察职能主要集中于警察机关。()

43.近代警察从中央到地方形成专职的警察队伍,成为国家庞大的专政工具之一,行使专门职权。()

44.近代警察机关的建立及其体制和职权,均以宪法或法律为依据。古代警察执法极不严格,私刑普遍存在。()

45.近代警察与古代警察都有专门的统一的制式服装。()

X近代警察有统一的制式服装,古代警察则没有专门的服装。

46.警察在本质上是国家政权中按照统治阶级意志,依靠暴力的、强制的、特殊的手段维护国家安全与社会秩序的武装性质的行政力量。()

47.社会主义国家和资本主义国家的警察的本质是一样的。()

X社会主义国家和资本主义国家的警察的本质是不一样的。

48.警察的本质特征是具有鲜明的阶级性、手段的特殊性和广泛的社会性。()

49.警察是国家机器的重要组成部分,是阶级专政的重要工具,必须与国体一致,必须与政体一致。()

50.警察机关为了完成法律赋予自己的职责,保障强制力的权威性,配有一定的武器和械具,是一支重要的具有武装性质的行政力量。()

51.警察所担负的任务十分广泛,一方面,作为阶级专政的工具,具有鲜明的阶级性;另一方面,担负着大量的社会管理任务,要为社会提供全面的治安保障,具有广泛的社会性。()

52.警察的职能,是指警察的社会效能和作用。()

53.国家的职能决定了警察的职能。()

54.警察是国家实行阶级专政的工具,是国家管理社会的司法机构。()

X警察是国家实行阶级专政的工具,是国家管理社会的行政机构。

55.警察具有阶级性和社会性相统一的特点。()

56.警察的基本职能包括政治镇压职能和社会管理职能。()

57.警察的阶级性表现在它的政治镇压职能上。()

58.警察的社会性表现在它的社会管理职能上。()

59.政治镇压职能,是指警察使用暴力,对威胁统治阶级的政治统治与国家安全的政治势力实行镇压。()

60.警察的政治镇压职能具有广泛的社会性和群众性。()

X警察的政治镇压职能具有鲜明的政治性和强烈的阶级性。

61.社会管理职能,是指警察运用行政管理的手段,维护一定社会:会制度下的社会秩序。()

62.警察的社会管理职能具有鲜明的政治性和强烈的阶级性。()

X警察的社会管理职能具有广泛的社会性和群众性。

63.警察的政治镇压职能和警察社会管理职能都是统治阶级意志的体现,两者相互依存,相辅相成。()

64.警察的政治镇压职能是社会管理职能的前提。()

65.警察的社会管理职能是政治镇压职能的基础。()

66.警察的政治镇压职能和警察社会管理职能处于同等地位。()

X警察的政治镇压职能和警察的社会管理职能并非处于同等地位,政治镇压职能通常置于首要地位。

67.为了确保党中央的安全,1927年12月在周恩来主持的中央特委的直接领导下,北京建立了中央特科。()

X为了确保党中央的安全,1927年12月在周恩来主持的中央特委的直接领导下,上海建立了中央特科。

68.中央特科是中国共产党在中央机关设立的最早的保卫组织。()

69.1931年11月,以原来的苏区中央局保卫处为基础,组建了国家政治保卫局。()

70.国家政治保卫局是我国最早的人民政权的公安保卫机关。()

71.1938年5月成立了西安市警察队,简称“边警”。()

X1938年5月成立了延安市警察队,全称“陕甘宁边区人民警察”,简称“边警”。

72.“陕甘宁边区人民警察”是我国历史上最早的一支比较正规的人民警察队伍。()

73.1939年2月,中央决定在党的高级组织内成立社会部,下设侦查、治安、情报、干部保卫和中央警卫团等机构。()

74.1949年7月,中央决定在华北社会部和华北公安部的基础上组建中央军委公安部。()

75.1949年11月1日,中华人民共和国公安部正式成立。()

76.1949年10月1日,中央人民政府委员会任命罗瑞卿为中华人民共和国中央人民政府公安部部长。()

X1949年10月9日,中央人民政府委员会任命罗瑞卿为中华人民共和国中央人民政府公安部部长。

77.1949年10月15日召开第一次全国公安会议,研究解决了统一全国公安组织机构和公安机关的工作任务问题。()

78.1995年10月,江泽民总书记为济南交警题词“严格执法,热情服务”。()

79.周永康部长指出:“在新世纪、新阶段,公安机关必须切实担负起巩固共产党执政地位,维护国家长治久安,保障人民安居乐业的重大政治和社会责任。”()

80.公安机关是人民民主专政的重要工具,这是公安机关的阶级属性,也是它的根本属性。()

81.公安机关是人民民主专政的重要工具,它表明了公安机关的阶级本质,是公安机关性质的核心内容和本质特征。()

82.罗瑞卿部长曾指出:“国家安危,公安系于一半。”()

X周恩来曾指出:“国家安危,公安系于一半。”

83.在人民当家做主的人民民主专政国家,公安机关是依据广大人民群众的意志建立的,忠实地执行人民的意志、国家的意志。()

84.在人民当家做主的人民民主专政国家,公安机关以国家赋予公安机关的任务为公安工作的总根据、总目标,以国家政策和法律为全部活动的依据。()

85.社会主义国家公安机关与剥削阶级国家警察机关都是维护统治阶级的利益。()

X社会主义国家公安机关与剥削阶级国家警察机关所维护的阶级利益不同,人民警察是维护工人阶级和广大人民群众最根本、最长远利益的,剥削阶级警察是维护剥削阶级利益的。

86.社会主义国家公安机关与剥削阶级国家警察机关在专政对象上不同。()

87.社会主义国家公安机关与剥削阶级国家警察机关在专政的目的是相同的。()

X社会主义国家公安机关与剥削阶级国家警察机关在专政的目的上是不同的。

88.社会主义国家公安机关与剥削阶级国家警察机关在同人民群众的关系上是不同的。()

89.公安机关只是我国国家的治安行政机关。()

X公安机关是我国国家的治安行政机关和刑事执法机关。

90.警察与军队的分工不同,警察的职能主要是对内,军队的职能主要是对外。()

91.我国公安机关的基本职能是专政职能[]。()

X我国公安机关的基本职能是专政职能和民主职能。

92.我国公安机关的专政职能是专门用以对付敌对势力、敌对分子和严重刑事犯罪分子的。()

93.公安机关的民主职能,是指公安机关依法保护人民的民主权利和其他合法权益的社会效能。()

94.公安机关专政职能是民主职能的社会基础,民主职能是专政职能的基本保障。()

X公安机关专政职能是民主职能的基本保障,民主职能是专政职能的社会基础。

95.公安机关专政职能与民主职能在对象和方法上不同。()

96.我国《人民警察法》中明确表明我国公安机关的宗旨是全心全意为人民服务。()

97.公安机关对人民负责,受人民监督。()

98.人民群众满意不满意、赞成不赞成、答应不答应,是衡量公安工作的最高标准。()

99.人民群众的支持,是公安工作最大的经济优势,是做好公安工作的根本保证。()

X人民群众的支持,是公安工作最大的政治优势,是做好公安工作的根本保证。

100.全心全意为人民服务,一个最基本的要求就是要坚持一切从人民群众的根本利益出发。()

二)单项选择题

1.建立近代警察制度较早的国家是()

A.中国和法国B.法国和美国C.法国和英国D.美国和英国

2.近代,地方自治制的警察管理体制的代表国家是()

A.英国B.法国C.美国D.都不是

3.近代,中央集权制的警察管理体制的代表国家是()

A。英国B.法国C.美国D.德国

4.中国的近代警察建立在()

A.明朝末期B。清朝前期C.清朝中期D.帝国主义入侵中国之后

5.中国历史上最早的专职警察机构是()年建立的。

A.1898B.1905C.1895D.1907

6.中国历史上第一个全国性的专职警察机构是清朝的()

A.“巡警部”B.“警务学堂”C..“巡警局”D。“巡警学校”

7.清政府的中央警察机关是()

A.“巡警部”B.“警务学堂”C.“巡警局”D,“巡警学校”

8.在中国历史上,将“巡捕”和“巡警”改为警察的是()

A.清政府B.南京临时政府C。蒋介石D.新中国

9.旧中国近代警察的历史,是()结合在一起,镇压革命、迫害人民的历史。

A.军警B.军特C.军警特D.军警和司法机关

10.以下关于近代警察与古代警察的区别正确的有()

A.古代警察的职能是独立的,近代警察的职能尚未能集中于一个统一的专门机关

B.近代警察没有专门的组织,古代警察有专职的警察队伍

C.近代警察机关的建立及其体制和职权均以宪法或法律为依据

D.近代警察没有统一的制式服装,古代警察则有专门的服装

11.警察是具有()性质的维护社会秩序、保卫国家安全的国家行政力量。

A.阶级斗争B.治安C.暴力D.武装

12.警察随着()的产生而产生,也必将随着()的消亡而消亡。

A.阶级B.国家C.政党D.行政机关

13.从警察起源上看()

A.原始社会也有警察

B.警察是一个历史范畴

C.警察是先于国家的产生而产生的

D.国家是先于警察的产生而产生的

14.决定警察必要性的直接因素是()

A.国家性质

B.阶级矛盾

C.社会各阶级力量的对比

D.社会矛盾引起的犯罪、对抗冲突和社会秩序问题

15.生产力的发展、私有制的产生,是警察产生的()

A.政治条件B.文化条件C.经济条件D.社会条件

16.阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的()

A.政治条件B.经济条件C.阶级条件D.文化条件

17.维护统治秩序与惩罚犯罪的客观需要,是警察产生的()

A.经济条件B.政治条件C.文化条件D.社会条件

18.警察产生的政治条件是()

A.维护统治秩序与惩罚犯罪的客观需要

B.国家机器的形成

C.阶级矛盾和统治阶级内部矛盾的不可调和性

D.社会矛盾引起的犯罪、对抗冲突和社会秩序问题

19.在奴隶社会、封建社会中()

A.有专职的警察队伍B.有专门的警察机关C.没有专门的警察机关D.没有类似警察的职能机构

20.近代警察是资本主义发展的产物,发端于()

A.法国B.美国C.英国D.西欧

21.下列有关警察本质的表述正确的有()

A.世界各国警察在本质上是共同的

B.世界各国的警察在本质上是不同的

C.世界各国警察在本质上既有相同点,也有不同点

D.世界各国警察在本质上没有可比性

22.下列叙述正确的有()

A.警察必须与国体一致

B.警察必须与政体一致

C.警察必须与国体一致,必须与政体一致

D.警察独立于国体和政体之外

23.警察的基本职能包括()

A.政治镇压职能和社会管理职能

B.经济管理职能和文化职能

C.社会管理职能和社会文化职能

D.政治镇压职能和经济管理职能

24.警察使用暴力,对威胁统治阶级的政治统治与国家安全的政治势力实行镇压属于警察的()职能。

A.经济管理B.社会文化C.政治镇压D.社会管理

25.警察运用行政管理的手段,维护一定社会制度下的社会秩序,属于警察的()职能。

A.社会文化B.经济管理C.政治镇压D.社会管理

26.警察的政治镇压职能和社会管理职能的关系是()

A.相互依存,相辅相成

B.同等重要,相互矛盾

C.主从关系,社会管理职能为主,政治镇压职能为辅

D.同等重要,辩证统一

27.中国共产党在中央机关设立的最早的保卫组织是()

A.“巡警部”B.社会部C.国家政治保卫局D.中央特科

28.我国最早的人民政权的公安保卫机关是()

A.“巡警部”B.社会部C.国家政治保卫局D,中央特科

29.我国历史上最早的一支比较正规的人民警察队伍是()

A.1905年设立的“巡警部”

B.1927年设立的中央特科

C.1938年5月成立的延安市警察队

D.1939年设立的社会部

30.中华人民共和国公安部正式成立的时间是()

A.1949年10月1日B.1949年10月9日C.1949年11月1日D.1949年12月1日

31.1949年10月9R中央人民政府委员会任命()为首任中华人民共和国公安部部长。

A.罗瑞卿B.杨奇清C.谢富治D.陈毅

32.1995年10月,()为济南交警题词“严格执法,热情服务”。

A.邓小平B.胡耀邦C.江泽民D.胡锦涛

33.1995年10月,江泽民总书记为济南交警的题词是()

A.“以阶级斗争为纲”

B.“从严治警、依法治警”

C.“严格执法,热情服务”

D.“抓班子、带队伍、促工作、保平安”

34.在我国,公安机关的阶级属性是。

【侨报记者逸清5月20日洛杉矶报道】美国大多数禁止或严格限制堕胎的州法律都是由男性政客投票通过的。男性是否对一个与女性关系如此密切的问题与女性意见相反? 

据VOX报道,堕胎的合法性从根本上讲,是一个妇女的权利和身体自主权的问题。问题并不在于堕胎,而在于自由和控制。但很多人认为堕胎法律在很大程度上是由性别决定的。因为基于性别的意见分歧是全球政治的一个普遍特征,尤其是在美国。美国女性比男性更倾向于支持政府项目的扩大。 

2015年,Vox和Perry Undem合作开展了一个民意调查项目,试图捕捉美国在堕胎问题上的所有细微差别。其中一件事表明,美国人对诸如“支持生命”和“支持选择”这类宽泛词组的理解并不理解,甚至认为它们是相互排斥的。

在阿拉巴马州蒙哥马利,争取妇女权利的抗议者在阿拉巴马州国会大厦台阶上举行集会(图片来自:美联社)

研究还显示,男性和女性都认为自己支持堕胎,而女性认为自己支持堕胎的可能性略高于男性。

女性更倾向于认为堕胎在任何情况下都应该是合法的,但也更有可能认为堕胎永远不应该合法。

这听起来很奇怪,但皮尤的一项大型国际比较显示,各国有多少人认为堕胎“在所有或大多数情况下”应该是合法的。报告发现,在亚美尼亚和葡萄牙等少数几个国家,性别差异非常大,但更常见的情况是,女性对合法堕胎更友好,但只是非常轻微的友好。

有迹象表明,阶层不同,情况可能也有所不同。例如,令人吃惊的是,名义上支持堕胎权利的两名共和党参议员都是女性。 

男性和女性在其他事情上的分歧更大。例如,皮尤的调查显示,在政府是否应该提供更多的公共服务这一基本问题上,男性和女性之间存在长期的差距——这一差距近年来一直在扩大。

甚至在川普时期,人们对一个更大、更积极的政府是否可取的分歧不断扩大之前,性别差异就已经超过了与堕胎相关的问题所反映的性别差异。

从实际意义上讲,女性在经济政策和国家安全问题上更倾向于左翼,这意味着女性更有可能投票给民主党政客。由于民选官员在堕胎问题上倾向于比普通民众更极端的观点,这意味着在实践中,妇女的政治参与对堕胎的法律地位有很大的影响。但这并不是因为男性和女性在堕胎政策本身上存在任何特别大的分歧。

。‟)

;

return tempptr ;

}

!!!!!!!!!!!!!!!!!!!!12. 已知String类定义如下:

class String

{

public:

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

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

~ String(); // 析构函数

String & operater =(const String &rhs); // 赋值函数

private:

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

};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)

{

if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断{

m_data = new char[1] ;

m_data[0] = '

若角α与β的终边垂直,则α与β的关系是(  )

β=α+90°

β=α±90°

β=k•360°+α+90°,k∈ZD

1

β=k•360°+α±90°,k∈Z

正确答案

D

解答

解:若角α与β的终边垂直,则β-α=k•360°±90°,k∈Z,

∴β=k•360°+α±90°,k∈Z.

故选:D.

川普总统20日在德州奥斯汀参观苹果电脑工厂时��,回答媒体众院弹劾他一事时表示��,完全...

  川普总统20日在德州奥斯汀参观苹果电脑工厂时,回答媒体众院弹劾他一事时表示,完全没有交换条件,他被媒体拍到手中备有重点提示的字条 美联社

  美国驻欧盟大使桑德兰(Gordon Sondland)19日作证时,针对暂缓乌克兰军援,施压乌克兰启动调查的争议,称「每个人都清楚,这不是秘密」;除川普总统率先反驳,包括副总统潘斯在内被点名高层官员纷纷发声明驳斥桑德兰的证词。

  川普强调多次告知桑德兰「我什么都不要」

  川普20日上午先收看桑德兰的听证转播,边写下大略笔记;他接近中午准备前往德州时,在白宫南草坪罕见照著字条念,回应桑德兰的证词;还要求记者拍到他照本宣读,称桑德兰9月曾致电问他:「你想要什么?你想要什么?我听到各方理论,你想要什么?」

  川普向记者说说:「现在我要(重述)回答,准备好了吗?摄影机有在拍吗?我什么都不要,这是我想从乌克兰那得到的;我说了两次『我什么都不要』。」

  川普自述,当时告诉桑德兰:「我什么都不想要、我什么都不想要,我不要交换条件;告诉(乌克兰总统)泽伦斯基(Volodymyr Zelenskiy)做对的事情」。

  川普看著他以白宫字条写下的白纸黑字笔记,重建他当初与桑德兰对话的场景,强调他的发言没有言外之意;川普没有回应桑德兰的其他证词,仅发表三分钟的谈话。

  潘斯声明 从未与桑德兰讨论乌克兰金援

  潘斯的幕僚萧特(Marc Short)发表声明表示:「副总统从未与桑德兰讨论调查白登父子、Burisma公司,或根据潜在的调查对乌克兰有条件地发放金援」。

  桑德兰在证词中表示,他于9月1日在华沙与潘斯会面时提出警示;对此,萧特否认,称潘斯在那趟波兰行中未单独会晤桑德兰。

  能源部也发表声明,称桑德兰「曲解能源部长培瑞(Rick Perry)与朱利安尼的互动,以及培瑞接收川普的指示;培瑞仅一次在川普的要求下,与朱利安尼碰面,没人聆听那通谈话;通话期间和前后,培瑞在场时,都未提及Burisma或白登。

  培瑞曾说,他只了解乌克兰调查整体贪腐,但桑德兰在证词中表示,培瑞和川普政府努力寻求特定调查。

  朱利安尼反批 共和党接收民主党骗局

  川普私人律师朱利安尼(Rudy Giuliani)则罕见的批评代表共和党提问的众院监督委员会首席调查顾问卡斯特(Steve Castor),说道「共和党律师不自己调查和准备,反而接收民主党的谎言和骗局;让我来告诉他:我在乌克兰没有利益冲突,没有!我希望他道歉。」

。' ;

}

else

{

m_data = new char[strlen(str) + 1];

strcpy(m_data,str);

}

}

String::String(const String &another)

{

m_data = new char[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

String& String::operator =(const String &rhs)

{

if ( this == &rhs)

return *this ;

delete []m_data; //删除原来的数据,新开一块内存

m_data = new char[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

String::~String()

{

delete []m_data ;

}

13. .h头文件中的ifndef/define/endif 的作用?

答:防止该头文件被重复引用。

14. #i nclude<file.h> 与#i nclude "file.h"的区别?

答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

15.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。

通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern 声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的,来看看C++中对类似C的函数是怎样编译的:

作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:

void foo( int x, int y );

该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。

_foo_int_int 这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数void foo( int x, int y )与void foo( int x, float y )编译生成的符号是不相同的,后者为_foo_int_float。

同样地,C++中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全局变量名字不同。

未加extern "C"声明时的连接方式

假设在C++中,模块A的头文件如下:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

int foo( int x, int y );

#endif

在模块B中引用该函数:

// 模块B实现文件moduleB.cpp

#i nclude "moduleA.h"

foo(2,3);

实际上,在连接阶段,连接器会从模块A生成的目标文件moduleA.obj中寻找_foo_int_int 这样的符号!

加extern "C"声明后的编译和连接方式

加extern "C"声明后,模块A的头文件变为:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

extern "C" int foo( int x, int y );

#endif

在模块B的实现文件中仍然调用foo( 2,3 ),其结果是:

(1)模块A编译生成foo的目标代码时,没有对其名字进行特殊处理,采用了C语言的方式;

(2)连接器在为模块B的目标代码寻找foo(2,3)调用时,寻找的是未经修改的符号名_foo。如果在模块A中函数声明了foo为extern "C"类型,而模块B中包含的是extern int foo( int x, int y ) ,则模块B找不到模块A中的函数;反之亦然。

所以,可以用一句话概括extern “C”这个声明的真实目的(任何语言中的任何语法特性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入地理解许多问题):实现C++与C及其它语言的混合编程。

明白了C++中extern "C"的设立动机,我们下面来具体分析extern "C"通常的使用技巧: extern "C"的惯用法

(1)在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:

extern "C"

{

#i nclude "cExample.h"

}

而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。

C++引用C函数例子工程中包含的三个文件的源代码如下:

/* c语言头文件:cExample.h */

#ifndef C_EXAMPLE_H

#define C_EXAMPLE_H

extern int add(int x,int y);

#endif

/* c语言实现文件:cExample.c */

#i nclude "cExample.h"

int add( int x, int y )

{

return x + y;

}

// c++实现文件,调用add:cppFile.cpp

extern "C"

{

#i nclude "cExample.h"

}

int main(int argc, char* argv[])

{

add(2,3);

return 0;

}

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" {}。

(2)在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C 语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

C引用C++函数例子工程中包含的三个文件的源代码如下:

//C++头文件cppExample.h

#ifndef CPP_EXAMPLE_H

#define CPP_EXAMPLE_H

extern "C" int add( int x, int y );

#endif

//C++实现文件cppExample.cpp

#i nclude "cppExample.h"

int add( int x, int y )

{

return x + y;

}

/* C实现文件cFile.c

/* 这样会编译出错:#i nclude "cExample.h" */

extern int add( int x, int y );

int main( int argc, char* argv[] )

{

add( 2, 3 );

return 0;

}

15题目的解答请参考《C++中extern “C”含义深层探索》注解:

16. 关联、聚合(Aggregation)以及组合(Composition)的区别?

涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就

是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:

从实现的角度讲,聚合可以表示为:

class A {...} class B { A* a; .....}

而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系:

实现的形式是:

class A{...} class B{ A a; ...}

参考文章:http://blog.csdn.net/wfwd/archive/2006/05/30/763753.aspx

http://blog.csdn.net/wfwd/archive/2006/05/30/763760.aspx

17.面向对象的三个基本特征,并简单叙述之?

1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)

2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

18. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义复类虚函数的方法。

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

19. 多态的作用?

主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

20. Ado与Ado.net的相同与不同?

除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.NET 体系不同于COM 体系, ADO.NET 接口也就完全不同于ADO和OLE DB 接口,这也就是说ADO.NET 和ADO是

两种数据访问方式。ADO.net 提供对XML 的支持。

21. New delete 与malloc free 的联系与区别?

答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

22. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5);i 是多少?

答案:i 为30。

23. 有哪几种情况只能用intialization list 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

24. C++是不是类型安全的?

答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

25. main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行。

26. 描述内存分配方式以及它们的区别?

1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。

3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

27.struct 和class 的区别

答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和class 在其他方面是功能相当的。

从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用struct 关键字,否则,你应该使用class 关键字。

28.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)

答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。

29. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)

答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。

30. 比较C++中的4种类型转换方式?

请参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763785.aspx,重点是static_cast, dynamic_cast和reinterpret_cast的区别和应用。

31.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

答案:

BOOL : if ( !a ) or if(a)

int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001

if ( a < EXP && a >-EXP)

pointer : if ( a != NULL) or if(a == NULL)

32.请说出const与#define 相比,有何优点?

答案:1)const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

2)有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。33.简述数组与指针的区别?

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。

(1)修改内容上的差别

char a[] = “hello”;

a[0] = …X‟;

char *p = “world”; // 注意p 指向常量字符串

p[0] = ‘X’; // 编译器不能发现该错误,运行时错误

(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

char a[] = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 字节

cout<< sizeof(p) << endl; // 4 字节

计算数组和指针的内存容量

void Func(char a[100])

{

cout<< sizeof(a) << endl; // 4 字节而不是100 字节

}

34.类成员函数的重载、覆盖和隐藏区别?

答案:

a.成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual 关键字可有可无。

b.覆盖是指派生类函数覆盖基类函数,特征是:

(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual关键字。

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,

基类的函数将被隐藏(注意别与重载混淆)。

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

35. There are two int va riables: a and b, don‟t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.

答案:( ( a + b ) + abs( a - b ) ) / 2

36. 如何打印出当前源文件的文件名以及源文件的当前行号?

答案:

cout << __FILE__ ;

cout<<__LINE__ ;

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);

void main( void )

{

String str("zhanglin");

_onexit( fn1 );

_onexit( fn2 );

_onexit( fn3 );

_onexit( fn4 );

printf( "This is executed first.\n" );

}

int fn1()

{

printf( "next.\n" );

return 0;

}

int fn2()

{

printf( "executed " );

return 0;

}

int fn3()

{

printf( "is " );

return 0;

}

int fn4()

{

printf( "This " );

return 0;

}

The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.

38. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

答案:

#ifdef __cplusplus

cout<<"c++";

#else

cout<<"c";

#endif

39.文件中有一组整数,要求排序后输出到另一个文件中

答案:

#i nclude<iostream>

#i nclude<fstream>

using namespace std;

void Order(vector<int>& data) //bubble sort

{

int count = data.size() ;

int tag = false ; // 设置是否需要继续冒泡的标志位

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

{

for ( int j = 0 ; j < count - i - 1 ; j++)

{

if ( data[j] > data[j+1])

{

tag = true ;

int temp = data[j] ;

data[j] = data[j+1] ;

data[j+1] = temp ;

}

}

if ( !tag )

break ;

}

}

void main( void )

{

vector<int>data;

ifstream in("c:\data.txt");

if ( !in)

{

cout<<"file error!";

exit(1);

}

int temp;

while (!in.eof())

{

in>>temp;

data.push_back(temp);

}

in.close(); //关闭输入文件流

Order(data);

ofstream out("c:\result.txt");

if ( !out)

{

cout<<"file error!";

exit(1);

}

for ( i = 0 ; i < data.size() ; i++)

out<<data[i]<<" ";

out.close(); //关闭输出文件流

}

40. 链表题:一个链表的结点结构

struct Node

{

int data ;

Node *next ;

};

typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表逆序( Intel) Node * ReverseList(Node *head) //链表逆序

{

if ( head == NULL || head->next == NULL )

return head;

Node *p1 = head ;

Node *p2 = p1->next ;

Node *p3 = p2->next ;

p1->next = NULL ;

while ( p3 != NULL )

{

p2->next = p1 ;

p1 = p2 ;

p2 = p3 ;

p3 = p3->next ;

}

p2->next = p1 ;

head = p2 ;

return head ;

}

(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)

Node * Merge(Node *head1 , Node *head2)

{

if ( head1 == NULL)

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

Node *p1 = NULL;

Node *p2 = NULL;

if ( head1->data < head2->data )

{

head = head1 ;

p1 = head1->next;

p2 = head2 ;

}

else

{

head = head2 ;

p2 = head2->next ;

p1 = head1 ;

}

Node *pcurrent = head ;

while ( p1 != NULL && p2 != NULL)

{

if ( p1->data <= p2->data )

{

pcurrent->next = p1 ;

pcurrent = p1 ;

p1 = p1->next ;

}

else

{

pcurrent->next = p2 ;

pcurrent = p2 ;

p2 = p2->next ;

}

}

if ( p1 != NULL )

pcurrent->next = p1 ;

if ( p2 != NULL )

pcurrent->next = p2 ;

return head ;

}

(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)

答案:

Node * MergeRecursive(Node *head1 , Node *head2)

{

if ( head1 == NULL )

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

if ( head1->data < head2->data )

{

head = head1 ;

head->next = MergeRecursive(head1->next,head2);

}

else

{

head = head2 ;

head->next = MergeRecursive(head1,head2->next);

}

return head ;

}

41. 分析一下这段程序的输出(Autodesk)

class B

{

public:

B()

{

cout<<"default constructor"<<endl;

}

~B()

{

cout<<"destructed"<<endl;

}

B(int i):data(i) //B(int) works as a converter ( int -> instance of B)

{

cout<<"constructed by parameter " << data <<endl;

}

private:

int data;

};

B Play( B b)

{

return b ;

}

(1) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(t1); destructed t1形参析构

return 0;destructed t2注意顺序! } destructed t1

(2) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(10); constructed by parameter 10 return 0;destructed B(10)形参析构} destructed t2注意顺序!

destructed t1

42. 写一个函数找出一个整数数组中,第二大的数(microsoft)答案:

const int MINNUMBER = -32767 ;

int find_sec_max( int data[] , int count)

{

int maxnumber = data[0] ;

int sec_max = MINNUMBER ;

for ( int i = 1 ; i < count ; i++)

{

if ( data[i] > maxnumber )

{

sec_max = maxnumber ;

maxnumber = data[i] ;

}

else

{

if ( data[i] > sec_max )

sec_max = data[i] ;

}

}

return sec_max ;

}

43. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

KMP算法效率最好,时间复杂度是O(n+m)。

44. 多重继承的内存分配问题:

比如有class A : public class B, public class C {}

那么A的内存结构大致是怎么样的?

这个是compiler-dependent的, 不同的实现其细节可能不同。

如果不考虑有虚函数、虚继承的话就相当简单;否则的话,相当复杂。

可以参考《深入探索C++对象模型》,或者:

http://blog.csdn.net/wfwd/archive/2006/05/30/763797.aspx

45. 如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针) struct node { char val; node* next;}

bool check(const node* head) {} //return false : 无环;true: 有环

一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):

bool check(const node* head)

{

if(head==NULL) return false;

node *low=head, *fast=head->next;

while(fast!=NULL && fast->next!=NULL)

{

low=low->next;

fast=fast->next->next;

if(low==fast) return true;

}

return false;

}

1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age, 在些链表中删除学生年龄等于age的学生信息。

程序代码

#i nclude "stdio.h"

#i nclude "conio.h"

struct stu{

char name[20];

char sex;

int no;

int age;

struct stu * next;

}*linklist;

struct stu *creatlist(int n)

{

int i;

//h为头结点,p为前一结点,s为当前结点

struct stu *h,*p,*s;

h = (struct stu *)malloc(sizeof(struct stu));

h->next = NULL;

p=h;

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

{

s = (struct stu *)malloc(sizeof(struct stu));

p->next = s;

printf("Please input the information of the student: name sex no age n");

scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);

s->next = NULL;

访问固定的内存位置(Accessing fixed memory locations)C C++ Development

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

一个较晦涩的方法是:

*(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

中断(Interrupts)

11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius)

{

double area = PI * radius * radius;

printf(" Area = %f", area);

return area;

}

这个函数有太多的错误了,以至让人不知从何说起了:

1). ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。

2). ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。

3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。

4). 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。代码例子(Code examples)

12 . 下面的代码输出是什么,为什么?

void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b > 6) puts("> 6") : puts("<= 6");

}

这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

13. 评价下面的代码片断:

unsigned int zero = 0;

unsigned int compzero = 0xFFFF;

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。

到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧…

动态内存分配(Dynamic memory allocation)

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输出是什么,为什么?

char *ptr;

if ((ptr = (char *)malloc(0)) == NULL)

puts("Got a null pointer");

else

puts("Got a valid pointer");

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

#define dPS struct s *

typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。哪种方法更好呢? (如果有的话)为什么?

这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是: typedef更好。思考下面的例子:

dPS p1,p2;

tPS p3,p4;

第一个扩展为

struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

晦涩的语法

16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

int a = 5, b = 7, c;

c = a+++b;

这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:

c = a++ + b;

因此, 这段代码持行后a = 6, b = 7, c = 12。

如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是:这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题

What will print out?

main()

{

char *p1=“name”;

char *p2;

p2=(char*)malloc(20);

memset (p2, 0, 20);

while(*p2++ = *p1++);

printf(“%sn”,p2);

}

Answer:empty string.

What will be printed as the result of the operation below: main()

{

int x=20,y=35;

x=y++ + x++;

y= ++y + ++x;

printf(“%d%dn”,x,y);

}

Answer : 5794

What will be printed as the result of the operation below: main()

{

int x=5;

printf(“%d,%d,%dn”,x,x< <2,x>>2);

}

Answer: 5,20,1

What will be printed as the result of the operation below: #define swap(a,b) a=a+b;b=a-b;a=a-b;

void main()

{

int x=5, y=10;

swap (x,y);

printf(“%d %dn”,x,y);

swap2(x,y);

printf(“%d %dn”,x,y);

}

int swap2(int a, int b)

{

int temp;

temp=a;

b=a;

a=temp;

return 0;

}

Answer: 10, 5

10, 5

What will be printed as the result of the operation below: main()

{

char *ptr = ” Cisco Systems”;

*ptr++; printf(“%sn”,ptr);

ptr++;

printf(“%sn”,ptr);

}

Answer:Cisco Systems

isco systems

What will be printed as the result of the operation below:

main()

{

char s1[]=“Cisco”;

char s2[]= “systems”;

printf(“%s”,s1);

}

Answer: Cisco

What will be printed as the result of the operation below:

main()

{

char *p1;

char *p2;

p1=(char *)malloc(25);

p2=(char *)malloc(25);

strcpy(p1,”Cisco”);

strcpy(p2,“systems”);

strcat(p1,p2);

printf(“%s”,p1);

}

Answer: Ciscosystems

The following variable is available in file1.c, who can access it?: static int average;

Answer: all the functions in the file1.c can access the variable. WHat will be the result of the following code?

#define TRUE 0 // some code

while(TRUE)

{

// some code

}

Answer: This will not go into the loop as TRUE is defined as 0. What will be printed as the result of the operation below:

int x;

int modifyvalue()

{

return(x+=10);

}

int changevalue(int x)

{

return(x+=1);

}

void main()

{

int x=10;

x++;

changevalue(x);

x++;

modifyvalue();

printf("First output:%dn",x);

x++;

changevalue(x);

printf("Second output:%dn",x);

modifyvalue();

printf("Third output:%dn",x);

}

Answer: 12 , 13 , 13

What will be printed as the result of the operation below:

main()

{

int x=10, y=15;

x = x++;

y = ++y;

printf(“%d %dn”,x,y);

}

Answer: 11, 16

What will be printed as the result of the operation below:

main()

{

int a=0;

if(a==0)

printf(“Cisco Systemsn”);

printf(“Cisco Systemsn”);

}

Answer: Two lines with “Cisco Systems” will be printed.

1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

2.将一个1M -10M 的文件,逆序存储到另一个文件,就是前一个文件的最后一个

字符存到新文件的第一个字符,以此类推。

3.main主函数执行完毕后,是否可能会再执行一段代码?

4.一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?

在子类的空间里,有没有父类的这个函数,或者父类的私有变量?

5.给一个字符串、例如“ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。

用C/C++语言写一函数完成该算法,给出复杂度

6.对序列1、1、2、3、5、8、13。。是Fab..数列

2、3、5、13...是Fab..质数数列,因为他们与自己前面的Fab...数列都互质

给出k,返回第k小的Fab..质数

7.101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。

8.完成字符串拷贝可以使用sprintf、strcpy 及memcpy 函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?

9.变量的声明和定义有什么区别?

10.请写出下面代码在32 位平台上的运行结果,并说明sizeof 的性质:

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

char a[30];

char *b = (char *)malloc(20 * sizeof(char));

printf("%d\n", sizeof(a));

printf("%d\n", sizeof(b));

printf("%d\n", sizeof(a[3]));

printf("%d\n", sizeof(b+3));

printf("%d\n", sizeof(*(b+4)));

return 0 ;

}

12.请完成以下题目。注意,请勿直接调用ANSI C 函数库中的函数实现。

a)请编写一个C 函数,该函数给出一个字节中被置1 的位的个数,并请

给出该题的至少一个不同解法。

b)请编写一个C 函数,该函数将给定的一个字符串转换成整数。

c)请编写一个C 函数,该函数将给定的一个整数转换成字符串。

d)请编写一个C 函数,该函数将一个字符串逆序。

e)请编写一个C 函数,该函数在给定的内存区域搜索给定的字符,并返回

该字符所在位置索引值。

f)请编写一个C 函数,该函数在一个字符串中找到可能的最长的子字符串,

该字符串是由同一字符组成的。

给出演示上述函数功能的一个简单程序,并请编写对应的Makefile 文件

13.我们需要编写一个图形相关的应用程序,需要处理大量图形(Shape)信息,

图形有矩形(Rectangle),正方形(Square),圆形(Circle)等种类,应用

需要计算这些图形的面积,并且可能需要在某个设备上进行显示(使用在标准

输出上打印信息的方式做为示意)。

a)请用面向对象的方法对以上应用进行设计,编写可能需要的类

b)请给出实现以上应用功能的示例性代码,从某处获取图形信息,

并且进行计算和绘制

c)如果你的Square继承自Rectangle,请给出理由,如果不是,

请给出理由,并且请比较两种方式的优劣

d)请问你所编写的类,在如下代码中会有何表现,请解释

void test_rectangle_area(Rectangle& r)

{

r.set_width(10);

r.set_height(15);

assert(r.area() == 150);

}

14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节点不是尾节点,试编程实现删除此节点

15.写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)

16.编写一个Identify的分配、释放的函数,为1-10000之间的自然数。

17.分别实现itoa和atoi.

18.Consider the following code:

#include <stdio.h>

#include <string.h>

int main(int argc, char *argv[]) {

int i = 1;

char buf[4];

strcpy(buf, "AAAA");

printf("%d\n", i);

return 0;

}

a) When compiled and executed on x86, why does this program usually not

output what the programmer intended?

b) Name several ways in which the security problem that causes this

program not to output what the programmer intended can be prevented

WITHOUT changing the code.

19.int w=1,x=2,y=3,z=4;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(m<2)?m:z;

printf("m=%d",m); 说出结果

20.说出结果

#include <stdio.h>

main()

{

FILE *fp;

int i,a[4]={1,2,3,4},b;

fp=fopen("data.dat","wb");//这里帮忙解释一下

for(i=0;i<4;i++)

fwrite(&a[i],sizeof(int),1,fp);//这里也帮忙看一下

fclose(fp);

fp=fopen("data.dat","rb");

fseek(fp,-2L*sizeof(int),SEEK_END);//还有这里

fread(&b,sizeof(int),1,fp);//这里还有也看一下

fclose(fp);

printf("b=%d\n",b);

}

21.有双向循环链表结点:

typedef struct node

{

int date;

struct node *front,*next;

}_Node;

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中date值相同的结点删除

22.

char * GetStr()

{

char *tmp;

tmp = "123"

return tmp;

}

void main()

{

printf("%s", GetStr());

}

会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的?

23.

字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?类ClassB从ClassA派生,那么ClassA *a = new ClassB(…); 试问该表达是否合法?为什么?如果ClassA中定义并实现虚函数int func(void),ClassB中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况又如何?为什么? char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?

如下所述的if else和switch语句哪个的效率高?为什么?

在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?

应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?

24.Assignment 2: Picture Processing

Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE to process a picture with a high resolution (3 Mega Pixels for example). Use some methodologies to degrade the resolution of the picture to make it quicker for browsing. Then divide the degraded picture into 9 sectors equally. Click any of the 9 sectors will result a detailed picture for this sector with the same resolution as that of the original picture. This assignment is designed for you to demonstrate your ability to handle pictures.

25.用<<,>>,|,&实现一个WORD(2个字节)的高低位交换!!

26.要开辟P1,P2,P3,P4内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的!

27.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)

28.找错:

#include <string.h>

#include <stdio.h>

class Base

{

private:

char * name;

public:

Base(char * className)

{

name = new char[strlen(className)];

strcpy(name, className);

}

~Base()

{

delete name;

}

char * copyName()

{

char newname [256];

strcpy(newname, name);

return newname;

}

char * getName()

{

return name;

}

static void print(Base base)

{

printf("name: %s\n" , base.name);

}

};

class Subclass : public Base

{

public:

Subclass(char * className) : Base(className)

{

}

};

int main()

{

Base * pBase = new Subclass("test");

Base::print(*pBase);

printf("name: %s\n", pBase->getName());

printf("new name: %s\n", pBase->copyName());

return 0;

}

29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回.

30.编写一个函数将一条字符串分成两部分,将前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变,)最后再将前后两部分交换,然后将该字符串输出,

测试字符串“ADZDDJKJFIEJHGI”

31.找错

V oid test1()

{

char string[10];

char* str1="0123456789";

strcpy(string, str1);

}

V oid test2()

{

char string[10], str1[10]; for(I=0; I<10;I++)

{

str1[i] ='a';

}

strcpy(string, str1);

}

V oid test3(char* str1)

{

char string[10];

if(strlen(str1)<=10) {

strcpy(string, str1);

}

}

32. 找错

#define MAX_SRM 256

DSN get_SRM_no()

{

static int SRM_no;

int I;

for(I=0;I{

SRM_no %= MAX_SRM;

if(MY_SRM.state==IDLE) {

break;

}

}

if(I>=MAX_SRM)

return (NULL_SRM);

else

return SRM_no;

}

33. 写出程序运行结果

int sum(int a)

{

auto int c=0;

static int b=3;

c+=1;

b+=2;

return(a+b+C);

}

void main()

{

int I;

int a=2;

for(I=0;I<5;I++)

{

printf("%d,", sum(a)); }

}

34.

int func(int a)

{

int b;

switch(a)

{

case 1: 30;

case 2: 20;

case 3: 16;

default: 0

}

return b;

}

则func(1)=?

35:

int a[3];

a[0]=0; a[1]=1; a[2]=2;

int *p, *q;

p=a;

q=&a[2];

则a[q-p]=?

36.

定义int **a[3][4], 则变量占有的内存空间为:_____

37.

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

38.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)

我只知道是用递推,大概写了一下,如下:

int IsTwoPow(int s)

{

if(s==1)return FALSE;

s=s>>1;

if(s>1)IsTwoPow(s);

return (s==1)?TRUE:FALSE;//大概是这个意思,但是这一句似乎不该这么返回!

}

39 A,B从一堆玻璃球(共100个)里向外拿球,规则如下:

(1)A先拿,然后一人一次交替着拿;

(2)每次只能拿1个或2个或4个;

(3)谁拿最后一个球,谁就是最后的失败者;

问A,B谁将是失败者?写出你的判断步骤。

40.已知:无序数组,折半查找,各元素值唯一。

函数原型是:Binary_Seach(int array[], int iValue, int iCount)

array是数组,在里面用折半查找的方法找等于iValue的值,找到返回1否则0,iCount是元素个数

41.统计一个字符串中字符出现的次数

42.100位以上的超大整数的加法(主要考虑数据结构和加法的实现)。

43.对如下电文:"CASTCASTSATATATASA"给出Huffman编码。

44.int (* (*f)(int, int))(int)表示什么含义?

45.x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。

46.中缀表达式A-(B+C/D)*E的后缀形式是什么?

47.struct S1

{

char c;

int i;

};

sizeof(S1) = ?

class X{

public:

X();

virtual ~X();

void myMemberFunc();

static void myStaticFunc();

virtual void myVirtualFunc();

private:

int i;

char * pstr;

char a;

}

sizeof(X) = ?

48.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"

49.有一百个整数,其中有负数,找出连续三个数之和最大的部分.

50.写一程序实现快速排序. 假设数据输入为一文件

快速算法描述如下

Algorithm Partition

Input: sequence a0, ..., an-1 with n elements

Output: permutation of the sequence such that all elements a0, ..., aj are less than or equal to all elements ai, ..., an-1 (i > j)

Method:

choose the element in the middle of the sequence as comparison element x

let i = 0 and j = n-1

while ij

search the first element ai which is greater than or equal to x

search the last element aj which is less than or equal to x

if ij

exchange ai and aj

let i = i+1 and j = j-1

After partitioning the sequence, Quicksort treats the two parts recursively by the same procedure. The recursion ends whenever a part consists of one element only.

51.写一算法检测单向链表中是否存在环(whether there is a loop in a link list),

要求算法复杂度(Algorithm's complexity是O(n)) 并只使用常数空间(space is O(c)).

注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构.

52.设下列函数已经通过了调试

bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray);

该函数在内存中排序,能把字节数最大为100M字节的ArrayType类型的数组排序。其中ArrayType是一个

预定义的数组类型(细节无关紧要),Pinputarray,Poutarray分别为排序前的指针和排序后的指针。

请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务:

输入:排序前的大文件,名称为char * pinoutfilename ,其内容为用分号分隔的ArrayType

类型的数组元素,可装满4个100M字节的数组。

输出:排序后的大文件char * poutoutfilename。

53.用最有效率的方法算出2乘以8等於几?

54.

1.错误的转义字符是(c)

A.'1'

B.'\'

C.'

若角α与β的终边垂直,则α与β的关系是(  )

β=α+90°

β=α±90°

β=k•360°+α+90°,k∈ZD

1

β=k•360°+α±90°,k∈Z

正确答案

D

解答

解:若角α与β的终边垂直,则β-α=k•360°±90°,k∈Z,

∴β=k•360°+α±90°,k∈Z.

故选:D.

川普总统20日在德州奥斯汀参观苹果电脑工厂时,回答媒体众院弹劾他一事时表示���,完全...

  川普总统20日在德州奥斯汀参观苹果电脑工厂时,回答媒体众院弹劾他一事时表示,完全没有交换条件,他被媒体拍到手中备有重点提示的字条 美联社

  美国驻欧盟大使桑德兰(Gordon Sondland)19日作证时,针对暂缓乌克兰军援,施压乌克兰启动调查的争议,称「每个人都清楚,这不是秘密」;除川普总统率先反驳,包括副总统潘斯在内被点名高层官员纷纷发声明驳斥桑德兰的证词。

  川普强调多次告知桑德兰「我什么都不要」

  川普20日上午先收看桑德兰的听证转播,边写下大略笔记;他接近中午准备前往德州时,在白宫南草坪罕见照著字条念,回应桑德兰的证词;还要求记者拍到他照本宣读,称桑德兰9月曾致电问他:「你想要什么?你想要什么?我听到各方理论,你想要什么?」

  川普向记者说说:「现在我要(重述)回答,准备好了吗?摄影机有在拍吗?我什么都不要,这是我想从乌克兰那得到的;我说了两次『我什么都不要』。」

  川普自述,当时告诉桑德兰:「我什么都不想要、我什么都不想要,我不要交换条件;告诉(乌克兰总统)泽伦斯基(Volodymyr Zelenskiy)做对的事情」。

  川普看著他以白宫字条写下的白纸黑字笔记,重建他当初与桑德兰对话的场景,强调他的发言没有言外之意;川普没有回应桑德兰的其他证词,仅发表三分钟的谈话。

  潘斯声明 从未与桑德兰讨论乌克兰金援

  潘斯的幕僚萧特(Marc Short)发表声明表示:「副总统从未与桑德兰讨论调查白登父子、Burisma公司,或根据潜在的调查对乌克兰有条件地发放金援」。

  桑德兰在证词中表示,他于9月1日在华沙与潘斯会面时提出警示;对此,萧特否认,称潘斯在那趟波兰行中未单独会晤桑德兰。

  能源部也发表声明,称桑德兰「曲解能源部长培瑞(Rick Perry)与朱利安尼的互动,以及培瑞接收川普的指示;培瑞仅一次在川普的要求下,与朱利安尼碰面,没人聆听那通谈话;通话期间和前后,培瑞在场时,都未提及Burisma或白登。

  培瑞曾说,他只了解乌克兰调查整体贪腐,但桑德兰在证词中表示,培瑞和川普政府努力寻求特定调查。

  朱利安尼反批 共和党接收民主党骗局

  川普私人律师朱利安尼(Rudy Giuliani)则罕见的批评代表共和党提问的众院监督委员会首席调查顾问卡斯特(Steve Castor),说道「共和党律师不自己调查和准备,反而接收民主党的谎言和骗局;让我来告诉他:我在乌克兰没有利益冲突,没有!我希望他道歉。」

。

椭圆周长和旋转椭球面积近似值的简单算法

——第十六届北京高中数学知识应用竞赛论文

论文标题:椭圆周长和旋转椭球面积近似值的简单算法

作者姓名:吴欢庆、吴斯乾(合作)

性别:男学校:北京市通州区第四中学

年级:高二指导教师:曹凤华、李江涛

准考证号:0311

[内容摘要]:我选这个课题是因为我父亲在工作中遇到了需要计算椭圆周长而又不会算的问题,我为了解决我父亲的困难,所以对这方面做了一些研究。我们用类比推理的方法,提出了椭圆周长近似的简单算法,并推广到怎样计算旋转椭球体的表面积。我们采用简单推导加上用C语言编程计算的方法,让程序运行了约一个小时,得到了一组比较精确的数据,一定程度上解决了计算椭圆周长难的问题。对一些需要计算椭圆周长的工程应用有一定的帮助。

[关键词]:椭圆周长,椭球表面积,椭圆积分,修正因子

本人郑重声明:所呈交的数学应用论文是本人在指导教师的指导下独立进行研究的成果,除文中已经注明引用的内容外,本文不含其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。

论文作者签名:吴欢庆吴斯乾

2013年3月30日

椭圆周长和旋转椭球面积近似值的简单算法

圆是最美的图形,但自然界中的正圆,少之又少。行星运行的轨道是椭圆的,地球是一个椭球体,在生物界里很难看到完美的圆。许多的图形都是不规则的,椭圆是独特的,与众不同。

众所周知,椭圆积分属于高等微积分的知识,求解椭圆周长的积分存在着很大的难度,在实际的生活应用中给人们带来很大的困扰。当你需要求一个椭圆物体的周长时,总是会没有头绪,仿佛不知道它的计算公式(其实本来就没有公式),没有了这些数据,做起研究就会不知所措。

我的一个朋友以前做关于种子完整度的研究,用到了圆形度来描述种子的形状。他在他的博客中这样写道:

“为了检测表皮破裂种子,我调用IMAQVision里的形状分析函数得到了面积周长长度宽度等一些形状参数。根据种子图像轮廓,发现用种子的圆形度:,(P为周长,A为面积)可以比较好地区分完整和破碎种子。后来我想,种子的轮廓更接近椭圆,何不用‘椭圆形度’衡量面积和周长的关系呢?可是我记不得椭圆周长的计算方法,百度之,发现我原本就不可能知道。”

椭圆是一个不怎么完美的图形,椭圆周长的积分不能用像圆的周长和面积那样简单的公式表达,所以我们只能计算椭圆周长的近似值。因为没有一个确定的公式,当我们需要精确计算椭圆周长的时候,麻烦就来了。

我父亲是做机床生意的,有次我和父亲去公司,遇到了一位做管道设备的客户,他需要把圆形的管道截成斜面,然后沿着斜面再接上一个椭圆形的管道,这位客户要求把铝板卷成椭圆的管道,至于用多宽的铝板,就需要计算椭圆截面的周长。由于这样一个斜的截面不方便测量,虽然可以做一些试验,来确定铝板的宽度,而这样必定会耗费很多时间和精力。如果材料比较贵的话,用试验的方法就不太可取了。对于普通的工人来说,没有多少数学知识,又不能设计程序计算,怎样求椭圆的周长就成了一个问题。而我,懂得一些微积分,也想帮父亲解决这个问题,所以我想找出一个计算椭圆周长的简单方法。

§椭圆周长的积分

我们在计算曲线图形的面积和周长通常都要用到微积分,下面我们简单地推导一下椭圆周长的积分表达式:

我们知道椭圆的参数方程为

我们先求四分之一椭圆的周长,取参数为积分变量,它的变化区间为

相应于上任一小区间的小弧段的长度近似等于对应的长度,

因为:

所以:的近似值,即弧长元素为

==

=

=

其中=(是离心率)

所以椭圆周长C的积分表达式如下:

C=

就是上面这个看似简单的积分实际上是很难积出的,如果你觉得你的微积分很厉害,不妨也试试。实际上人们把椭圆周长的积分叫做“第二类不完全椭圆积分”,到此为止,接下来只能将展开成无穷级数,再进行积分,过程稍复杂,这里就不再讨论了。

§猜想椭圆周长的公式

我们知道,圆的面积:,类似的,椭圆的面积:;圆的周长公式是:,而椭圆的周长却不等于乘上半长轴与半短轴之和。那么椭圆的周长和有什么关系呢?其实很容易想到,当离心率很小的时候,周长是近似等于的;离心率越接近1,给出的结果就越不精确,我们先猜想,下面来看看这个猜想公式的精度如何。

要想知道精确度,首先要得到精确的周长。我们的方法很简单,只要借助计算机将椭圆n等分,把每一个弧长“微元”相加就行了。根据上面推出的积分表达式,先将四分之一椭圆20万等分。我们采用C语言编写计算不同离心率下椭圆周长、面积的程序,程序的原理很简单,其实就是取的值为,这样求的近似值,就变成了算出的值,以下是程序内容:

#include"stdio.h"

#include"math.h"

#definepi3.1415926535897932384626

intmain()

{

printf("--不同离心率下椭圆的周长和面积--(a=1)\n离心率计算周长猜想周长计算面积理论面积\n");

doublee,x1,x2,y1,y2;

for(e=0.05;e。'

D.'\''

2.若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)

A.数组的长度

B.数组第一个元素的值

C.数组所有元素的值

D.数组第一个元素的地址

3.变量的指针含意是指变量的(b)

A.值

B.地址

C.存储

D.名字

5.某文件中定义的静态全局变量(或称静态外部变量)其作用域是(d)

A.只限某个函数

B.本文件

C.跨文件

D.不限制作用域

55.

1. 解二次方程:a*x*x+b*x+c

int Quadratic( double a,double b,double c,double& x1,double& x2);

返回值:解的个数

2. 最大公约数

DWORD Divisor( DWORD dwFirst, DWORD dwSecond );

返回值:最大公约数

3. 根据蒙特卡洛算法计算圆周率

double PI( DOWRD dwCount/*测试次数*/ );

返回值:PI

4. 无符号整数乘法,乘数为32bit,结果为64bit

提示:32bit整数分解为16bit相乘

void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );

5. 链表排序(从小到大)

节点定义为:

struct Node{

int nValue;

struct Node* pNext;

};

最后一个节点的pNext = NULL. Node* SortChain( Node* pHead ); 返回值:链表头

。

公安基础练习题及答案(一):公安机关的性质、职能和宗旨

一、练习题(一)判断题

1.生产力的发展、私有制的产生,是警察产生的经济条件。()

2.阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的政治条件。()

X阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的阶级条件。

3.维护统治秩序与惩罚犯罪的客观需要,是警察产生的阶级条件。()

X维护统治秩序与惩罚犯罪的客观需要,是警察产生的社会条件。

4.国家机器的形成,是警察产生的政治条件。()

5.在奴隶社会、封建社会中,没有专门的警察机关,也没有专职的警察队伍。()

6,在奴隶社会和封建社会中执行警察职能的机构与官吏,称为古代警察。()

7.在奴隶社会、封建社会中,警察的职能是由军队、审判机关和行政官吏分别掌管的。()

8.古代警察的特点之一是军警不分,警政合一。()

9.古代警察行使职权,在法律上是极不严格的,神权、皇帝或长官的意志起决定作用。()

10.近代警察只是适应资本主义制度需要而建立起来的专门执行警察职能的机构[]。()

X近代警察是适应资本主义制度需要而建立起来的专门执行警察职能的机构和官吏。

11.警察在世界各国有不同的含义,在我国警察是具有武装性质的维护社会秩序、保卫国家安全的国家行政力量。()

12.在我国,警察的任务是维护社会秩序,保卫国家安全。()

13.警察的性质是具有武装性质的国家治安行政力量。()

14.世界各国都拥有自己的警察力量,有的国家甚至不设军队,但都建有自己的警察机构,设置专职的警察力量。()

15.警察是一个历史范畴,是人类社会一定历史阶段上的产物。()

16.警察和警察机关不是从来就有的,也不是永世长存的,它随着国家的产生而产生,也必将随着国家的消亡而消亡。()

17.在人类社会的历史阶段中,原始社会没有警察。()

18.警察是国家中执行专政职能的工具。()

19.决定警察必要性的直接因素是由社会矛盾引起的犯罪、对抗冲突和社会秩序问题。()

20.警察虽然随着国家的产生而产生,但是警察同国家不一样,它不是阶级矛盾不可调和的产物。()

X警察随着国家的产生而产生,警察同国家一样,也是阶级矛盾不可调和的产物。

21.近代警察发端于西欧,是资本主义发展的产物。()

22.建立近代警察制度较早的国家是法国和英国。()

23.近代警察是社会生产力迅速发展和社会分工日益细密的必然结果。()

24.1789年法国资产阶级革命后建立了保安官制度,即实行了资产阶级共和国的警察制度。()

25.英国在中世纪就建有治安法官制度。()

26.1829年英国通过了《警察法》,并由罗伯特·庇尔建立了首都伦敦警察厅。()

27.世界各国警察,受英、法两国警察制度的影响,形成了两种不同的警政管理体制:地方自治制和中央集权制。()

28.地方自治警政管理体制以法国为代表。()

X地方自治警政管理体制以英国为代表。

29.中央集权制警政管理体制以英国为代表。()

X中央集权制警政管理体制以法国为代表。

30.在地方自治警政管理体制中,警察受地方政府领导,中央政府只起监督作用。()

31.在中央集权制警政管理体制中,警察由中央政府统一领导。()

32.近代警察的管理体制的形成主要受美、法两国警察制度的影响。()

X近代警察的管理体制的形成主要受英、法两国警察制度的影响。

33.中国的近代警察是帝国主义入侵中国之后的产物。()

34.1898年,湖南巡抚陈宝箴在长沙成立“湖南保卫局”,这是中国历史上最早的专职警察机构。()

35.1905年,清政府在北京设立“巡警部”,这是清政府的中央警察机关。()

36.中国历史上第一个全国性的专职警察机构是1898年在长沙成立“湖南保卫局”。()

X中国历史上第一个全国性的专职警察机构是1905年清政府在北京设立的“巡警部”。

37.1912年,中华民国成立后,南京临时政府将“巡捕”和“巡警”改为警察。()

38.1927年,蒋介石设立“内政部警政司”,把各省、市、县的警察机关改为“警察局”。()

X1927年,蒋介石设立“内政部警政司”,把各省、市、县的警察机关改为“公安局”。

39.1946年,蒋介石政权设立“内政部警察总署”,将各省、市、县警察机关改为“公安局”。().

X1946年,蒋介石政权设立“内政部警察总署”,将各省、市、县警察机关改为“警察局”。

40.旧中国近代警察的历史,是军警特结合在一起,镇压革命、迫害人民的历史。()

41.警察的职能是否集中于一个统一的警察机关是近代警察与古代警察的区别之一。()

42.近代警察的职能是独立的,警察职能主要集中于警察机关。()

43.近代警察从中央到地方形成专职的警察队伍,成为国家庞大的专政工具之一,行使专门职权。()

44.近代警察机关的建立及其体制和职权,均以宪法或法律为依据。古代警察执法极不严格,私刑普遍存在。()

45.近代警察与古代警察都有专门的统一的制式服装。()

X近代警察有统一的制式服装,古代警察则没有专门的服装。

46.警察在本质上是国家政权中按照统治阶级意志,依靠暴力的、强制的、特殊的手段维护国家安全与社会秩序的武装性质的行政力量。()

47.社会主义国家和资本主义国家的警察的本质是一样的。()

X社会主义国家和资本主义国家的警察的本质是不一样的。

48.警察的本质特征是具有鲜明的阶级性、手段的特殊性和广泛的社会性。()

49.警察是国家机器的重要组成部分,是阶级专政的重要工具,必须与国体一致,必须与政体一致。()

50.警察机关为了完成法律赋予自己的职责,保障强制力的权威性,配有一定的武器和械具,是一支重要的具有武装性质的行政力量。()

51.警察所担负的任务十分广泛,一方面,作为阶级专政的工具,具有鲜明的阶级性;另一方面,担负着大量的社会管理任务,要为社会提供全面的治安保障,具有广泛的社会性。()

52.警察的职能,是指警察的社会效能和作用。()

53.国家的职能决定了警察的职能。()

54.警察是国家实行阶级专政的工具,是国家管理社会的司法机构。()

X警察是国家实行阶级专政的工具,是国家管理社会的行政机构。

55.警察具有阶级性和社会性相统一的特点。()

56.警察的基本职能包括政治镇压职能和社会管理职能。()

57.警察的阶级性表现在它的政治镇压职能上。()

58.警察的社会性表现在它的社会管理职能上。()

59.政治镇压职能,是指警察使用暴力,对威胁统治阶级的政治统治与国家安全的政治势力实行镇压。()

60.警察的政治镇压职能具有广泛的社会性和群众性。()

X警察的政治镇压职能具有鲜明的政治性和强烈的阶级性。

61.社会管理职能,是指警察运用行政管理的手段,维护一定社会:会制度下的社会秩序。()

62.警察的社会管理职能具有鲜明的政治性和强烈的阶级性。()

X警察的社会管理职能具有广泛的社会性和群众性。

63.警察的政治镇压职能和警察社会管理职能都是统治阶级意志的体现,两者相互依存,相辅相成。()

64.警察的政治镇压职能是社会管理职能的前提。()

65.警察的社会管理职能是政治镇压职能的基础。()

66.警察的政治镇压职能和警察社会管理职能处于同等地位。()

X警察的政治镇压职能和警察的社会管理职能并非处于同等地位,政治镇压职能通常置于首要地位。

67.为了确保党中央的安全,1927年12月在周恩来主持的中央特委的直接领导下,北京建立了中央特科。()

X为了确保党中央的安全,1927年12月在周恩来主持的中央特委的直接领导下,上海建立了中央特科。

68.中央特科是中国共产党在中央机关设立的最早的保卫组织。()

69.1931年11月,以原来的苏区中央局保卫处为基础,组建了国家政治保卫局。()

70.国家政治保卫局是我国最早的人民政权的公安保卫机关。()

71.1938年5月成立了西安市警察队,简称“边警”。()

X1938年5月成立了延安市警察队,全称“陕甘宁边区人民警察”,简称“边警”。

72.“陕甘宁边区人民警察”是我国历史上最早的一支比较正规的人民警察队伍。()

73.1939年2月,中央决定在党的高级组织内成立社会部,下设侦查、治安、情报、干部保卫和中央警卫团等机构。()

74.1949年7月,中央决定在华北社会部和华北公安部的基础上组建中央军委公安部。()

75.1949年11月1日,中华人民共和国公安部正式成立。()

76.1949年10月1日,中央人民政府委员会任命罗瑞卿为中华人民共和国中央人民政府公安部部长。()

X1949年10月9日,中央人民政府委员会任命罗瑞卿为中华人民共和国中央人民政府公安部部长。

77.1949年10月15日召开第一次全国公安会议,研究解决了统一全国公安组织机构和公安机关的工作任务问题。()

78.1995年10月,江泽民总书记为济南交警题词“严格执法,热情服务”。()

79.周永康部长指出:“在新世纪、新阶段,公安机关必须切实担负起巩固共产党执政地位,维护国家长治久安,保障人民安居乐业的重大政治和社会责任。”()

80.公安机关是人民民主专政的重要工具,这是公安机关的阶级属性,也是它的根本属性。()

81.公安机关是人民民主专政的重要工具,它表明了公安机关的阶级本质,是公安机关性质的核心内容和本质特征。()

82.罗瑞卿部长曾指出:“国家安危,公安系于一半。”()

X周恩来曾指出:“国家安危,公安系于一半。”

83.在人民当家做主的人民民主专政国家,公安机关是依据广大人民群众的意志建立的,忠实地执行人民的意志、国家的意志。()

84.在人民当家做主的人民民主专政国家,公安机关以国家赋予公安机关的任务为公安工作的总根据、总目标,以国家政策和法律为全部活动的依据。()

85.社会主义国家公安机关与剥削阶级国家警察机关都是维护统治阶级的利益。()

X社会主义国家公安机关与剥削阶级国家警察机关所维护的阶级利益不同,人民警察是维护工人阶级和广大人民群众最根本、最长远利益的,剥削阶级警察是维护剥削阶级利益的。

86.社会主义国家公安机关与剥削阶级国家警察机关在专政对象上不同。()

87.社会主义国家公安机关与剥削阶级国家警察机关在专政的目的是相同的。()

X社会主义国家公安机关与剥削阶级国家警察机关在专政的目的上是不同的。

88.社会主义国家公安机关与剥削阶级国家警察机关在同人民群众的关系上是不同的。()

89.公安机关只是我国国家的治安行政机关。()

X公安机关是我国国家的治安行政机关和刑事执法机关。

90.警察与军队的分工不同,警察的职能主要是对内,军队的职能主要是对外。()

91.我国公安机关的基本职能是专政职能[]。()

X我国公安机关的基本职能是专政职能和民主职能。

92.我国公安机关的专政职能是专门用以对付敌对势力、敌对分子和严重刑事犯罪分子的。()

93.公安机关的民主职能,是指公安机关依法保护人民的民主权利和其他合法权益的社会效能。()

94.公安机关专政职能是民主职能的社会基础,民主职能是专政职能的基本保障。()

X公安机关专政职能是民主职能的基本保障,民主职能是专政职能的社会基础。

95.公安机关专政职能与民主职能在对象和方法上不同。()

96.我国《人民警察法》中明确表明我国公安机关的宗旨是全心全意为人民服务。()

97.公安机关对人民负责,受人民监督。()

98.人民群众满意不满意、赞成不赞成、答应不答应,是衡量公安工作的最高标准。()

99.人民群众的支持,是公安工作最大的经济优势,是做好公安工作的根本保证。()

X人民群众的支持,是公安工作最大的政治优势,是做好公安工作的根本保证。

100.全心全意为人民服务,一个最基本的要求就是要坚持一切从人民群众的根本利益出发。()

二)单项选择题

1.建立近代警察制度较早的国家是()

A.中国和法国B.法国和美国C.法国和英国D.美国和英国

2.近代,地方自治制的警察管理体制的代表国家是()

A.英国B.法国C.美国D.都不是

3.近代,中央集权制的警察管理体制的代表国家是()

A。英国B.法国C.美国D.德国

4.中国的近代警察建立在()

A.明朝末期B。清朝前期C.清朝中期D.帝国主义入侵中国之后

5.中国历史上最早的专职警察机构是()年建立的。

A.1898B.1905C.1895D.1907

6.中国历史上第一个全国性的专职警察机构是清朝的()

A.“巡警部”B.“警务学堂”C..“巡警局”D。“巡警学校”

7.清政府的中央警察机关是()

A.“巡警部”B.“警务学堂”C.“巡警局”D,“巡警学校”

8.在中国历史上,将“巡捕”和“巡警”改为警察的是()

A.清政府B.南京临时政府C。蒋介石D.新中国

9.旧中国近代警察的历史,是()结合在一起,镇压革命、迫害人民的历史。

A.军警B.军特C.军警特D.军警和司法机关

10.以下关于近代警察与古代警察的区别正确的有()

A.古代警察的职能是独立的,近代警察的职能尚未能集中于一个统一的专门机关

B.近代警察没有专门的组织,古代警察有专职的警察队伍

C.近代警察机关的建立及其体制和职权均以宪法或法律为依据

D.近代警察没有统一的制式服装,古代警察则有专门的服装

11.警察是具有()性质的维护社会秩序、保卫国家安全的国家行政力量。

A.阶级斗争B.治安C.暴力D.武装

12.警察随着()的产生而产生,也必将随着()的消亡而消亡。

A.阶级B.国家C.政党D.行政机关

13.从警察起源上看()

A.原始社会也有警察

B.警察是一个历史范畴

C.警察是先于国家的产生而产生的

D.国家是先于警察的产生而产生的

14.决定警察必要性的直接因素是()

A.国家性质

B.阶级矛盾

C.社会各阶级力量的对比

D.社会矛盾引起的犯罪、对抗冲突和社会秩序问题

15.生产力的发展、私有制的产生,是警察产生的()

A.政治条件B.文化条件C.经济条件D.社会条件

16.阶级矛盾和统治阶级内部矛盾的不可调和性,是警察产生的()

A.政治条件B.经济条件C.阶级条件D.文化条件

17.维护统治秩序与惩罚犯罪的客观需要,是警察产生的()

A.经济条件B.政治条件C.文化条件D.社会条件

18.警察产生的政治条件是()

A.维护统治秩序与惩罚犯罪的客观需要

B.国家机器的形成

C.阶级矛盾和统治阶级内部矛盾的不可调和性

D.社会矛盾引起的犯罪、对抗冲突和社会秩序问题

19.在奴隶社会、封建社会中()

A.有专职的警察队伍B.有专门的警察机关C.没有专门的警察机关D.没有类似警察的职能机构

20.近代警察是资本主义发展的产物,发端于()

A.法国B.美国C.英国D.西欧

21.下列有关警察本质的表述正确的有()

A.世界各国警察在本质上是共同的

B.世界各国的警察在本质上是不同的

C.世界各国警察在本质上既有相同点,也有不同点

D.世界各国警察在本质上没有可比性

22.下列叙述正确的有()

A.警察必须与国体一致

B.警察必须与政体一致

C.警察必须与国体一致,必须与政体一致

D.警察独立于国体和政体之外

23.警察的基本职能包括()

A.政治镇压职能和社会管理职能

B.经济管理职能和文化职能

C.社会管理职能和社会文化职能

D.政治镇压职能和经济管理职能

24.警察使用暴力,对威胁统治阶级的政治统治与国家安全的政治势力实行镇压属于警察的()职能。

A.经济管理B.社会文化C.政治镇压D.社会管理

25.警察运用行政管理的手段,维护一定社会制度下的社会秩序,属于警察的()职能。

A.社会文化B.经济管理C.政治镇压D.社会管理

26.警察的政治镇压职能和社会管理职能的关系是()

A.相互依存,相辅相成

B.同等重要,相互矛盾

C.主从关系,社会管理职能为主,政治镇压职能为辅

D.同等重要,辩证统一

27.中国共产党在中央机关设立的最早的保卫组织是()

A.“巡警部”B.社会部C.国家政治保卫局D.中央特科

28.我国最早的人民政权的公安保卫机关是()

A.“巡警部”B.社会部C.国家政治保卫局D,中央特科

29.我国历史上最早的一支比较正规的人民警察队伍是()

A.1905年设立的“巡警部”

B.1927年设立的中央特科

C.1938年5月成立的延安市警察队

D.1939年设立的社会部

30.中华人民共和国公安部正式成立的时间是()

A.1949年10月1日B.1949年10月9日C.1949年11月1日D.1949年12月1日

31.1949年10月9R中央人民政府委员会任命()为首任中华人民共和国公安部部长。

A.罗瑞卿B.杨奇清C.谢富治D.陈毅

32.1995年10月,()为济南交警题词“严格执法,热情服务”。

A.邓小平B.胡耀邦C.江泽民D.胡锦涛

33.1995年10月,江泽民总书记为济南交警的题词是()

A.“以阶级斗争为纲”

B.“从严治警、依法治警”

C.“严格执法,热情服务”

D.“抓班子、带队伍、促工作、保平安”

34.在我国,公安机关的阶级属性是。‟)

;

return tempptr ;

}

!!!!!!!!!!!!!!!!!!!!12. 已知String类定义如下:

class String

{

public:

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

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

~ String(); // 析构函数

String & operater =(const String &rhs); // 赋值函数

private:

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

};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)

{

if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断{

m_data = new char[1] ;

m_data[0] = '

人事行政总监职位说明书

岗位名称人事行政总监所在部门

直接上级总经理直接下级人事行政专员、系统分析、网络维护

所辖人数岗位分析日期2002年9月本职:负责公司的人力资源及行政工作,保证人事行政工作对公司业务的支持

职责与工作任务:

职责一职责表述:负责拟定人力资源计划

工作

任务

根据公司发展规划,建立山谷蓝、泰科曼的人力资源体系,提出组织结构改进方案和岗位职责设计方案

根据公司发展战略,负责组织制定人力资源战略规划

依据人力资源战略规划并结合公司年度经营计划和预算,组织制定人力资源计划

在公司组织机构发生调整变动时,组织制定人员调整方案并监督实施

职责二职责表述:负责建立健全公司人力资源管理制度并指导落实

工作

任务

组织制定并完善公司招聘、培训、考核、薪酬、保险和福利、人事档案管理等规章制度、实施细则及工作程序并指导落实

组织拟定全公司员工奖惩方案并负责实施

职责三职责表述:收集人事信息,为公司人事决策提供信息支持

工作

任务

定期组织收集有关员工招聘、培训、考核、薪酬等方面的信息,并撰写调查、分析报告,为公司重大人事决策提供信息支持

职责四职责表述:负责组织制定行政管理制度并监督执行

工作

任务

组织制定公司行政办公制度、后勤管理制度并监督执行

组织制定公司公文管理、办公用品采购管理制度并监督执行

职责五职责表述:负责公司行政办公事宜

工作

任务

协助总经理联系公司法律顾问,处理相关法律问题以及保管相关文件

负责公司对外联络事宜

负责公司重大活动的策划、组织与安排

职职责表述:负责组织制定信息化管理制度并监督执行

六工作

任务根据公司信息化管理的要求,组织制定信息化管理制度并监督执行组织进行网络维护,确保网络安全、顺畅运行

负责审核系统升级费用计划和网络维护计划

职责七职责表述:负责本部门内部的组织管理

工作

任务

选拔、配备、考核下属人员,组织部门内部技能培训

指导属下员工制定阶段工作计划并督促执行

负责下属人员的工作分配

制定部门预算,控制费用支出

职责

职责描述:完成总经理交办的其他任务

权力:

对内部招聘制度有审核权、对人员招聘的筛选权和对劳动合同制度的制定权

对员工出勤的监督权和对员工考核数据和事项的核实权

对薪酬管理办法的调整方案有建议权

培训经费的使用管理权

对本部门预算内的费用有审核权

对所属下级的人事管理权

对所属下级的工作有监督、检查权、考核评价权

关键业绩指标:

公司利润

人力资源计划制定的合理性

人事、行政、信息制度制定的合理性

招聘、行政、信息系统问题响应的及时性

系统的安全稳定性

人事、行政档案的完整性

员工的流失率

费用控制

关键业务流程:

人力计划、业绩考评、招聘解聘、培训管理、系统管理、文档管理、薪酬管理、业务计划

工作协作关系:

内部协调关系总经理、公司各部门

外部协调关系高等院校、社会培训机构、人才交流中心、各媒体等任职资格:

教育水平大学本科及以上学历

专业人力资源管理专业、心理学及工商管理等相关专业培训经历管理培训、人力资源管理培训

经验5年以上人力资源管理工作经验

知识通晓人力资源管理知识,掌握行政管理、法律、信息系统管理等知识,了解相关业务领域专业知识

技能技巧较强的政策理论水平,较强的组织协调能力、应对冲突的能力、沟通能力,有较高的写作水平、良好的英语阅读能力和听说能力,熟练使用办公软件,具备基本的网络知识

其它:

工作时间特征正常工作时间,偶尔出差

所需记录文档人事管理制度、工作总结、汇报文件、通知备注:

职位考评说明

职位名称:人事行政总监

考评周期:年度

考评指标(上级):60%

1.费用控制10%

2.利润20%

3.管理协作性20%

4.岗位控制指标50%

-人员流失率10%

-招聘及时率10%

-公司档案完整率10%

-系统问题解决及时性10%

-网络稳定性10%

考评指标(同级):10%

协作性5%

沟通能力5%

考评指标(下级):10%

工作指导5%

问题解决5%

考评指标(自我):20%

人员流失率5%

招聘及时率5%

公司档案完整率5%

协作沟通5%

考评结果使用:

年度奖励发放

业绩奖励:

奖励:工资收入=10:90

其它说明:

工资级别与考核结果挂钩

' ;

}

else

{

m_data = new char[strlen(str) + 1];

strcpy(m_data,str);

}

}

String::String(const String &another)

{

m_data = new char[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

String& String::operator =(const String &rhs)

{

if ( this == &rhs)

return *this ;

delete []m_data; //删除原来的数据,新开一块内存

m_data = new char[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

String::~String()

{

delete []m_data ;

}

13. .h头文件中的ifndef/define/endif 的作用?

答:防止该头文件被重复引用。

14. #i nclude<file.h> 与#i nclude "file.h"的区别?

答:前者是从Standard Library的路径寻找和引用file.h,而后者是从当前工作路径搜寻并引用file.h。

15.在C++ 程序中调用被C 编译器编译后的函数,为什么要加extern “C”?

首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。

通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern 声明。例如,如果模块B欲引用该模块A中定义的全局变量和函数时只需包含模块A的头文件即可。这样,模块B中调用模块A中的函数时,在编译阶段,模块B虽然找不到该函数,但是并不会报错;它会在连接阶段中从模块A编译生成的目标代码中找到此函数extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的,来看看C++中对类似C的函数是怎样编译的:

作为一种面向对象的语言,C++支持函数重载,而过程式语言C则不支持。函数被C++编译后在符号库中的名字与C语言的不同。例如,假设某个函数的原型为:

void foo( int x, int y );

该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。

_foo_int_int 这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。例如,在C++中,函数void foo( int x, int y )与void foo( int x, float y )编译生成的符号是不相同的,后者为_foo_int_float。

同样地,C++中的变量除支持局部变量外,还支持类成员变量和全局变量。用户所编写程序的类成员变量可能与全局变量同名,我们以"."来区分。而本质上,编译器在进行编译时,与函数的处理相似,也为类中的变量取了一个独一无二的名字,这个名字与用户程序中同名的全局变量名字不同。

未加extern "C"声明时的连接方式

假设在C++中,模块A的头文件如下:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

int foo( int x, int y );

#endif

在模块B中引用该函数:

// 模块B实现文件moduleB.cpp

#i nclude "moduleA.h"

foo(2,3);

实际上,在连接阶段,连接器会从模块A生成的目标文件moduleA.obj中寻找_foo_int_int 这样的符号!

加extern "C"声明后的编译和连接方式

加extern "C"声明后,模块A的头文件变为:

// 模块A头文件moduleA.h

#ifndef MODULE_A_H

#define MODULE_A_H

extern "C" int foo( int x, int y );

#endif

在模块B的实现文件中仍然调用foo( 2,3 ),其结果是:

(1)模块A编译生成foo的目标代码时,没有对其名字进行特殊处理,采用了C语言的方式;

(2)连接器在为模块B的目标代码寻找foo(2,3)调用时,寻找的是未经修改的符号名_foo。如果在模块A中函数声明了foo为extern "C"类型,而模块B中包含的是extern int foo( int x, int y ) ,则模块B找不到模块A中的函数;反之亦然。

所以,可以用一句话概括extern “C”这个声明的真实目的(任何语言中的任何语法特性的诞生都不是随意而为的,来源于真实世界的需求驱动。我们在思考问题时,不能只停留在这个语言是怎么做的,还要问一问它为什么要这么做,动机是什么,这样我们可以更深入地理解许多问题):实现C++与C及其它语言的混合编程。

明白了C++中extern "C"的设立动机,我们下面来具体分析extern "C"通常的使用技巧: extern "C"的惯用法

(1)在C++中引用C语言中的函数和变量,在包含C语言头文件(假设为cExample.h)时,需进行下列处理:

extern "C"

{

#i nclude "cExample.h"

}

而在C语言的头文件中,对其外部函数只能指定为extern类型,C语言中不支持extern "C"声明,在.c文件中包含了extern "C"时会出现编译语法错误。

C++引用C函数例子工程中包含的三个文件的源代码如下:

/* c语言头文件:cExample.h */

#ifndef C_EXAMPLE_H

#define C_EXAMPLE_H

extern int add(int x,int y);

#endif

/* c语言实现文件:cExample.c */

#i nclude "cExample.h"

int add( int x, int y )

{

return x + y;

}

// c++实现文件,调用add:cppFile.cpp

extern "C"

{

#i nclude "cExample.h"

}

int main(int argc, char* argv[])

{

add(2,3);

return 0;

}

如果C++调用一个C语言编写的.DLL时,当包括.DLL的头文件或声明接口函数时,应加extern "C" {}。

(2)在C中引用C++语言中的函数和变量时,C++的头文件需添加extern "C",但是在C 语言中不能直接引用声明了extern "C"的该头文件,应该仅将C文件中将C++中定义的extern "C"函数声明为extern类型。

C引用C++函数例子工程中包含的三个文件的源代码如下:

//C++头文件cppExample.h

#ifndef CPP_EXAMPLE_H

#define CPP_EXAMPLE_H

extern "C" int add( int x, int y );

#endif

//C++实现文件cppExample.cpp

#i nclude "cppExample.h"

int add( int x, int y )

{

return x + y;

}

/* C实现文件cFile.c

/* 这样会编译出错:#i nclude "cExample.h" */

extern int add( int x, int y );

int main( int argc, char* argv[] )

{

add( 2, 3 );

return 0;

}

15题目的解答请参考《C++中extern “C”含义深层探索》注解:

16. 关联、聚合(Aggregation)以及组合(Composition)的区别?

涉及到UML中的一些概念:关联是表示两个类的一般性联系,比如“学生”和“老师”就

是一种关联关系;聚合表示has-a的关系,是一种相对松散的关系,聚合类不需要对被聚合类负责,如下图所示,用空的菱形表示聚合关系:

从实现的角度讲,聚合可以表示为:

class A {...} class B { A* a; .....}

而组合表示contains-a的关系,关联性强于聚合:组合类与被组合类有相同的生命周期,组合类要对被组合类负责,采用实心的菱形表示组合关系:

实现的形式是:

class A{...} class B{ A a; ...}

参考文章:http://blog.csdn.net/wfwd/archive/2006/05/30/763753.aspx

http://blog.csdn.net/wfwd/archive/2006/05/30/763760.aspx

17.面向对象的三个基本特征,并简单叙述之?

1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)

2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。

3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

18. 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义复类虚函数的方法。

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

19. 多态的作用?

主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

20. Ado与Ado.net的相同与不同?

除了“能够让应用程序处理存储于DBMS 中的数据“这一基本相似点外,两者没有太多共同之处。但是Ado使用OLE DB 接口并基于微软的COM 技术,而ADO.NET 拥有自己的ADO.NET 接口并且基于微软的.NET 体系架构。众所周知.NET 体系不同于COM 体系, ADO.NET 接口也就完全不同于ADO和OLE DB 接口,这也就是说ADO.NET 和ADO是

两种数据访问方式。ADO.net 提供对XML 的支持。

21. New delete 与malloc free 的联系与区别?

答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.

22. #define DOUBLE(x) x+x ,i = 5*DOUBLE(5);i 是多少?

答案:i 为30。

23. 有哪几种情况只能用intialization list 而不能用assignment?

答案:当类中含有const、reference 成员变量;基类的构造函数都需要初始化表。

24. C++是不是类型安全的?

答案:不是。两个不同类型的指针之间可以强制转换(用reinterpret cast)。C#是类型安全的。

25. main 函数执行以前,还会执行什么代码?

答案:全局对象的构造函数会在main 函数之前执行。

26. 描述内存分配方式以及它们的区别?

1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。

2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。

3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc 或new 申请任意多少的内存,程序员自己负责在何时用free 或delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

27.struct 和class 的区别

答案:struct 的成员默认是公有的,而类的成员默认是私有的。struct 和class 在其他方面是功能相当的。

从感情上讲,大多数的开发者感到类和结构有很大的差别。感觉上结构仅仅象一堆缺乏封装和功能的开放的内存位,而类就象活的并且可靠的社会成员,它有智能服务,有牢固的封装屏障和一个良好定义的接口。既然大多数人都这么认为,那么只有在你的类有很少的方法并且有公有数据(这种事情在良好设计的系统中是存在的!)时,你也许应该使用struct 关键字,否则,你应该使用class 关键字。

28.当一个类A 中没有声明任何成员变量与成员函数,这时sizeof(A)的值是多少,如果不是零,请解释一下编译器为什么没有让它为零。(Autodesk)

答案:肯定不是零。举个反例,如果是零的话,声明一个class A[10]对象数组,而每一个对象占用的空间是零,这时就没办法区分A[0],A[1]…了。

29. 在8086 汇编下,逻辑地址和物理地址是怎样转换的?(Intel)

答案:通用寄存器给出的地址,是段内偏移地址,相应段寄存器地址*10H+通用寄存器内地址,就得到了真正要访问的地址。

30. 比较C++中的4种类型转换方式?

请参考:http://blog.csdn.net/wfwd/archive/2006/05/30/763785.aspx,重点是static_cast, dynamic_cast和reinterpret_cast的区别和应用。

31.分别写出BOOL,int,float,指针类型的变量a 与“零”的比较语句。

答案:

BOOL : if ( !a ) or if(a)

int : if ( a == 0)

float : const EXPRESSION EXP = 0.000001

if ( a < EXP && a >-EXP)

pointer : if ( a != NULL) or if(a == NULL)

32.请说出const与#define 相比,有何优点?

答案:1)const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误。

2)有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。33.简述数组与指针的区别?

数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。

(1)修改内容上的差别

char a[] = “hello”;

a[0] = …X‟;

char *p = “world”; // 注意p 指向常量字符串

p[0] = ‘X’; // 编译器不能发现该错误,运行时错误

(2) 用运算符sizeof 可以计算出数组的容量(字节数)。sizeof(p),p 为指针得到的是一个指针变量的字节数,而不是p 所指的内存容量。C++/C 语言没有办法知道指针所指的内存容量,除非在申请内存时记住它。注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

char a[] = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 字节

cout<< sizeof(p) << endl; // 4 字节

计算数组和指针的内存容量

void Func(char a[100])

{

cout<< sizeof(a) << endl; // 4 字节而不是100 字节

}

34.类成员函数的重载、覆盖和隐藏区别?

答案:

a.成员函数被重载的特征:

(1)相同的范围(在同一个类中);

(2)函数名字相同;

(3)参数不同;

(4)virtual 关键字可有可无。

b.覆盖是指派生类函数覆盖基类函数,特征是:

(1)不同的范围(分别位于派生类与基类);

(2)函数名字相同;

(3)参数相同;

(4)基类函数必须有virtual关键字。

c.“隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下:

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,

基类的函数将被隐藏(注意别与重载混淆)。

(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)

35. There are two int va riables: a and b, don‟t use “if”, “? :”, “switch”or other judgement statements, find out the biggest one of the two numbers.

答案:( ( a + b ) + abs( a - b ) ) / 2

36. 如何打印出当前源文件的文件名以及源文件的当前行号?

答案:

cout << __FILE__ ;

cout<<__LINE__ ;

__FILE__和__LINE__是系统预定义宏,这种宏并不是在某个文件中定义的,而是由编译器定义的。

37. main 主函数执行完毕后,是否可能会再执行一段代码,给出说明?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行int fn1(void), fn2(void), fn3(void), fn4 (void);

void main( void )

{

String str("zhanglin");

_onexit( fn1 );

_onexit( fn2 );

_onexit( fn3 );

_onexit( fn4 );

printf( "This is executed first.\n" );

}

int fn1()

{

printf( "next.\n" );

return 0;

}

int fn2()

{

printf( "executed " );

return 0;

}

int fn3()

{

printf( "is " );

return 0;

}

int fn4()

{

printf( "This " );

return 0;

}

The _onexit function is passed the address of a function (func) to be called when the program terminates normally. Successive calls to _onexit create a register of functions that are executed in LIFO (last-in-first-out) order. The functions passed to _onexit cannot take parameters.

38. 如何判断一段程序是由C 编译程序还是由C++编译程序编译的?

答案:

#ifdef __cplusplus

cout<<"c++";

#else

cout<<"c";

#endif

39.文件中有一组整数,要求排序后输出到另一个文件中

答案:

#i nclude<iostream>

#i nclude<fstream>

using namespace std;

void Order(vector<int>& data) //bubble sort

{

int count = data.size() ;

int tag = false ; // 设置是否需要继续冒泡的标志位

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

{

for ( int j = 0 ; j < count - i - 1 ; j++)

{

if ( data[j] > data[j+1])

{

tag = true ;

int temp = data[j] ;

data[j] = data[j+1] ;

data[j+1] = temp ;

}

}

if ( !tag )

break ;

}

}

void main( void )

{

vector<int>data;

ifstream in("c:\data.txt");

if ( !in)

{

cout<<"file error!";

exit(1);

}

int temp;

while (!in.eof())

{

in>>temp;

data.push_back(temp);

}

in.close(); //关闭输入文件流

Order(data);

ofstream out("c:\result.txt");

if ( !out)

{

cout<<"file error!";

exit(1);

}

for ( i = 0 ; i < data.size() ; i++)

out<<data[i]<<" ";

out.close(); //关闭输出文件流

}

40. 链表题:一个链表的结点结构

struct Node

{

int data ;

Node *next ;

};

typedef struct Node Node ;

(1)已知链表的头结点head,写一个函数把这个链表逆序( Intel) Node * ReverseList(Node *head) //链表逆序

{

if ( head == NULL || head->next == NULL )

return head;

Node *p1 = head ;

Node *p2 = p1->next ;

Node *p3 = p2->next ;

p1->next = NULL ;

while ( p3 != NULL )

{

p2->next = p1 ;

p1 = p2 ;

p2 = p3 ;

p3 = p3->next ;

}

p2->next = p1 ;

head = p2 ;

return head ;

}

(2)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)

Node * Merge(Node *head1 , Node *head2)

{

if ( head1 == NULL)

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

Node *p1 = NULL;

Node *p2 = NULL;

if ( head1->data < head2->data )

{

head = head1 ;

p1 = head1->next;

p2 = head2 ;

}

else

{

head = head2 ;

p2 = head2->next ;

p1 = head1 ;

}

Node *pcurrent = head ;

while ( p1 != NULL && p2 != NULL)

{

if ( p1->data <= p2->data )

{

pcurrent->next = p1 ;

pcurrent = p1 ;

p1 = p1->next ;

}

else

{

pcurrent->next = p2 ;

pcurrent = p2 ;

p2 = p2->next ;

}

}

if ( p1 != NULL )

pcurrent->next = p1 ;

if ( p2 != NULL )

pcurrent->next = p2 ;

return head ;

}

(3)已知两个链表head1 和head2 各自有序,请把它们合并成一个链表依然有序,这次要求用递归方法进行。(Autodesk)

答案:

Node * MergeRecursive(Node *head1 , Node *head2)

{

if ( head1 == NULL )

return head2 ;

if ( head2 == NULL)

return head1 ;

Node *head = NULL ;

if ( head1->data < head2->data )

{

head = head1 ;

head->next = MergeRecursive(head1->next,head2);

}

else

{

head = head2 ;

head->next = MergeRecursive(head1,head2->next);

}

return head ;

}

41. 分析一下这段程序的输出(Autodesk)

class B

{

public:

B()

{

cout<<"default constructor"<<endl;

}

~B()

{

cout<<"destructed"<<endl;

}

B(int i):data(i) //B(int) works as a converter ( int -> instance of B)

{

cout<<"constructed by parameter " << data <<endl;

}

private:

int data;

};

B Play( B b)

{

return b ;

}

(1) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(t1); destructed t1形参析构

return 0;destructed t2注意顺序! } destructed t1

(2) results:

int main(int argc, char* argv[]) constructed by parameter 5

{ destructed B(5)形参析构

B t1 = Play(5); B t2 = Play(10); constructed by parameter 10 return 0;destructed B(10)形参析构} destructed t2注意顺序!

destructed t1

42. 写一个函数找出一个整数数组中,第二大的数(microsoft)答案:

const int MINNUMBER = -32767 ;

int find_sec_max( int data[] , int count)

{

int maxnumber = data[0] ;

int sec_max = MINNUMBER ;

for ( int i = 1 ; i < count ; i++)

{

if ( data[i] > maxnumber )

{

sec_max = maxnumber ;

maxnumber = data[i] ;

}

else

{

if ( data[i] > sec_max )

sec_max = data[i] ;

}

}

return sec_max ;

}

43. 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数。

KMP算法效率最好,时间复杂度是O(n+m)。

44. 多重继承的内存分配问题:

比如有class A : public class B, public class C {}

那么A的内存结构大致是怎么样的?

这个是compiler-dependent的, 不同的实现其细节可能不同。

如果不考虑有虚函数、虚继承的话就相当简单;否则的话,相当复杂。

可以参考《深入探索C++对象模型》,或者:

http://blog.csdn.net/wfwd/archive/2006/05/30/763797.aspx

45. 如何判断一个单链表是有环的?(注意不能用标志位,最多只能用两个额外指针) struct node { char val; node* next;}

bool check(const node* head) {} //return false : 无环;true: 有环

一种O(n)的办法就是(搞两个指针,一个每次递增一步,一个每次递增两步,如果有环的话两者必然重合,反之亦然):

bool check(const node* head)

{

if(head==NULL) return false;

node *low=head, *fast=head->next;

while(fast!=NULL && fast->next!=NULL)

{

low=low->next;

fast=fast->next->next;

if(low==fast) return true;

}

return false;

}

1、一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起,给出一个age, 在些链表中删除学生年龄等于age的学生信息。

程序代码

#i nclude "stdio.h"

#i nclude "conio.h"

struct stu{

char name[20];

char sex;

int no;

int age;

struct stu * next;

}*linklist;

struct stu *creatlist(int n)

{

int i;

//h为头结点,p为前一结点,s为当前结点

struct stu *h,*p,*s;

h = (struct stu *)malloc(sizeof(struct stu));

h->next = NULL;

p=h;

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

{

s = (struct stu *)malloc(sizeof(struct stu));

p->next = s;

printf("Please input the information of the student: name sex no age n");

scanf("%s %c %d %d",s->name,&s->sex,&s->no,&s->age);

s->next = NULL;

访问固定的内存位置(Accessing fixed memory locations)C C++ Development

10. 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写代码去完成这一任务。

这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

一个较晦涩的方法是:

*(int * const)(0x67a9) = 0xaa55;

即使你的品味更接近第二种方案,但我建议你在面试时使用第一种方案。

中断(Interrupts)

11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。

__interrupt double compute_area (double radius)

{

double area = PI * radius * radius;

printf(" Area = %f", area);

return area;

}

这个函数有太多的错误了,以至让人不知从何说起了:

1). ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。

2). ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。

3). 在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。

4). 与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。代码例子(Code examples)

12 . 下面的代码输出是什么,为什么?

void foo(void)

{

unsigned int a = 6;

int b = -20;

(a+b > 6) puts("> 6") : puts("<= 6");

}

这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。

13. 评价下面的代码片断:

unsigned int zero = 0;

unsigned int compzero = 0xFFFF;

对于一个int型不是16位的处理器为说,上面的代码是不正确的。应编写如下:

unsigned int compzero = ~0;

这一问题真正能揭露出应试者是否懂得处理器字长的重要性。在我的经验里,好的嵌入式程序员非常准确地明白硬件的细节和它的局限,然而PC机程序往往把硬件作为一个无法避免的烦恼。

到了这个阶段,应试者或者完全垂头丧气了或者信心满满志在必得。如果显然应试者不是很好,那么这个测试就在这里结束了。但如果显然应试者做得不错,那么我就扔出下面的追加问题,这些问题是比较难的,我想仅仅非常优秀的应试者能做得不错。提出这些问题,我希望更多看到应试者应付问题的方法,而不是答案。不管如何,你就当是这个娱乐吧…

动态内存分配(Dynamic memory allocation)

14. 尽管不像非嵌入式计算机那么常见,嵌入式系统还是有从堆(heap)中动态分配内存的过程的。那么嵌入式系统中,动态分配内存可能发生的问题是什么?

这里,我期望应试者能提到内存碎片,碎片收集的问题,变量的持行时间等等。这个主题已经在ESP杂志中被广泛地讨论过了(主要是P.J. Plauger, 他的解释远远超过我这里能提到的任何解释),所有回过头看一下这些杂志吧!让应试者进入一种虚假的安全感觉后,我拿出这么一个小节目:下面的代码片段的输出是什么,为什么?

char *ptr;

if ((ptr = (char *)malloc(0)) == NULL)

puts("Got a null pointer");

else

puts("Got a valid pointer");

这是一个有趣的问题。最近在我的一个同事不经意把0值传给了函数malloc,得到了一个合法的指针之后,我才想到这个问题。这就是上面的代码,该代码的输出是“Got a valid pointer”。我用这个来开始讨论这样的一问题,看看被面试者是否想到库例程这样做是正确。得到正确的答案固然重要,但解决问题的方法和你做决定的基本原理更重要些。

Typedef

15. Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:

#define dPS struct s *

typedef struct s * tPS;

以上两种情况的意图都是要定义dPS 和tPS 作为一个指向结构s指针。哪种方法更好呢? (如果有的话)为什么?

这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是: typedef更好。思考下面的例子:

dPS p1,p2;

tPS p3,p4;

第一个扩展为

struct s * p1, p2;

上面的代码定义p1为一个指向结构的指,p2为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。

晦涩的语法

16. C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么?

int a = 5, b = 7, c;

c = a+++b;

这个问题将做为这个测验的一个愉快的结尾。不管你相不相信,上面的例子是完全合乎语法的。问题是编译器如何处理它?水平不高的编译作者实际上会争论这个问题,根据最处理原则,编译器应当能处理尽可能所有合法的用法。因此,上面的代码被处理成:

c = a++ + b;

因此, 这段代码持行后a = 6, b = 7, c = 12。

如果你知道答案,或猜出正确答案,做得好。如果你不知道答案,我也不把这个当作问题。我发现这个问题的最大好处是:这是一个关于代码编写风格,代码的可读性,代码的可修改性的好的话题

What will print out?

main()

{

char *p1=“name”;

char *p2;

p2=(char*)malloc(20);

memset (p2, 0, 20);

while(*p2++ = *p1++);

printf(“%sn”,p2);

}

Answer:empty string.

What will be printed as the result of the operation below: main()

{

int x=20,y=35;

x=y++ + x++;

y= ++y + ++x;

printf(“%d%dn”,x,y);

}

Answer : 5794

What will be printed as the result of the operation below: main()

{

int x=5;

printf(“%d,%d,%dn”,x,x< <2,x>>2);

}

Answer: 5,20,1

What will be printed as the result of the operation below: #define swap(a,b) a=a+b;b=a-b;a=a-b;

void main()

{

int x=5, y=10;

swap (x,y);

printf(“%d %dn”,x,y);

swap2(x,y);

printf(“%d %dn”,x,y);

}

int swap2(int a, int b)

{

int temp;

temp=a;

b=a;

a=temp;

return 0;

}

Answer: 10, 5

10, 5

What will be printed as the result of the operation below: main()

{

char *ptr = ” Cisco Systems”;

*ptr++; printf(“%sn”,ptr);

ptr++;

printf(“%sn”,ptr);

}

Answer:Cisco Systems

isco systems

What will be printed as the result of the operation below:

main()

{

char s1[]=“Cisco”;

char s2[]= “systems”;

printf(“%s”,s1);

}

Answer: Cisco

What will be printed as the result of the operation below:

main()

{

char *p1;

char *p2;

p1=(char *)malloc(25);

p2=(char *)malloc(25);

strcpy(p1,”Cisco”);

strcpy(p2,“systems”);

strcat(p1,p2);

printf(“%s”,p1);

}

Answer: Ciscosystems

The following variable is available in file1.c, who can access it?: static int average;

Answer: all the functions in the file1.c can access the variable. WHat will be the result of the following code?

#define TRUE 0 // some code

while(TRUE)

{

// some code

}

Answer: This will not go into the loop as TRUE is defined as 0. What will be printed as the result of the operation below:

int x;

int modifyvalue()

{

return(x+=10);

}

int changevalue(int x)

{

return(x+=1);

}

void main()

{

int x=10;

x++;

changevalue(x);

x++;

modifyvalue();

printf("First output:%dn",x);

x++;

changevalue(x);

printf("Second output:%dn",x);

modifyvalue();

printf("Third output:%dn",x);

}

Answer: 12 , 13 , 13

What will be printed as the result of the operation below:

main()

{

int x=10, y=15;

x = x++;

y = ++y;

printf(“%d %dn”,x,y);

}

Answer: 11, 16

What will be printed as the result of the operation below:

main()

{

int a=0;

if(a==0)

printf(“Cisco Systemsn”);

printf(“Cisco Systemsn”);

}

Answer: Two lines with “Cisco Systems” will be printed.

1.多态类中的虚函数表是Compile-Time,还是Run-Time时建立的?

2.将一个1M -10M 的文件,逆序存储到另一个文件,就是前一个文件的最后一个

字符存到新文件的第一个字符,以此类推。

3.main主函数执行完毕后,是否可能会再执行一段代码?

4.一个父类写了一个virtual 函数,如果子类覆盖它的函数不加virtual ,也能实现多态?

在子类的空间里,有没有父类的这个函数,或者父类的私有变量?

5.给一个字符串、例如“ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。

用C/C++语言写一函数完成该算法,给出复杂度

6.对序列1、1、2、3、5、8、13。。是Fab..数列

2、3、5、13...是Fab..质数数列,因为他们与自己前面的Fab...数列都互质

给出k,返回第k小的Fab..质数

7.101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币重的结论。

8.完成字符串拷贝可以使用sprintf、strcpy 及memcpy 函数,请问这些函数有什么区别,你喜欢使用哪个,为什么?

9.变量的声明和定义有什么区别?

10.请写出下面代码在32 位平台上的运行结果,并说明sizeof 的性质:

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

char a[30];

char *b = (char *)malloc(20 * sizeof(char));

printf("%d\n", sizeof(a));

printf("%d\n", sizeof(b));

printf("%d\n", sizeof(a[3]));

printf("%d\n", sizeof(b+3));

printf("%d\n", sizeof(*(b+4)));

return 0 ;

}

12.请完成以下题目。注意,请勿直接调用ANSI C 函数库中的函数实现。

a)请编写一个C 函数,该函数给出一个字节中被置1 的位的个数,并请

给出该题的至少一个不同解法。

b)请编写一个C 函数,该函数将给定的一个字符串转换成整数。

c)请编写一个C 函数,该函数将给定的一个整数转换成字符串。

d)请编写一个C 函数,该函数将一个字符串逆序。

e)请编写一个C 函数,该函数在给定的内存区域搜索给定的字符,并返回

该字符所在位置索引值。

f)请编写一个C 函数,该函数在一个字符串中找到可能的最长的子字符串,

该字符串是由同一字符组成的。

给出演示上述函数功能的一个简单程序,并请编写对应的Makefile 文件

13.我们需要编写一个图形相关的应用程序,需要处理大量图形(Shape)信息,

图形有矩形(Rectangle),正方形(Square),圆形(Circle)等种类,应用

需要计算这些图形的面积,并且可能需要在某个设备上进行显示(使用在标准

输出上打印信息的方式做为示意)。

a)请用面向对象的方法对以上应用进行设计,编写可能需要的类

b)请给出实现以上应用功能的示例性代码,从某处获取图形信息,

并且进行计算和绘制

c)如果你的Square继承自Rectangle,请给出理由,如果不是,

请给出理由,并且请比较两种方式的优劣

d)请问你所编写的类,在如下代码中会有何表现,请解释

void test_rectangle_area(Rectangle& r)

{

r.set_width(10);

r.set_height(15);

assert(r.area() == 150);

}

14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节点不是尾节点,试编程实现删除此节点

15.写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计算速度)

16.编写一个Identify的分配、释放的函数,为1-10000之间的自然数。

17.分别实现itoa和atoi.

18.Consider the following code:

#include <stdio.h>

#include <string.h>

int main(int argc, char *argv[]) {

int i = 1;

char buf[4];

strcpy(buf, "AAAA");

printf("%d\n", i);

return 0;

}

a) When compiled and executed on x86, why does this program usually not

output what the programmer intended?

b) Name several ways in which the security problem that causes this

program not to output what the programmer intended can be prevented

WITHOUT changing the code.

19.int w=1,x=2,y=3,z=4;

m=(w<x)?w:x;

m=(m<y)?m:y;

m=(m<2)?m:z;

printf("m=%d",m); 说出结果

20.说出结果

#include <stdio.h>

main()

{

FILE *fp;

int i,a[4]={1,2,3,4},b;

fp=fopen("data.dat","wb");//这里帮忙解释一下

for(i=0;i<4;i++)

fwrite(&a[i],sizeof(int),1,fp);//这里也帮忙看一下

fclose(fp);

fp=fopen("data.dat","rb");

fseek(fp,-2L*sizeof(int),SEEK_END);//还有这里

fread(&b,sizeof(int),1,fp);//这里还有也看一下

fclose(fp);

printf("b=%d\n",b);

}

21.有双向循环链表结点:

typedef struct node

{

int date;

struct node *front,*next;

}_Node;

有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中date值相同的结点删除

22.

char * GetStr()

{

char *tmp;

tmp = "123"

return tmp;

}

void main()

{

printf("%s", GetStr());

}

会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的?

23.

字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?类ClassB从ClassA派生,那么ClassA *a = new ClassB(…); 试问该表达是否合法?为什么?如果ClassA中定义并实现虚函数int func(void),ClassB中也实现该函数,那么上述变量a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况又如何?为什么? char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?

如下所述的if else和switch语句哪个的效率高?为什么?

在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?

应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?

24.Assignment 2: Picture Processing

Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE to process a picture with a high resolution (3 Mega Pixels for example). Use some methodologies to degrade the resolution of the picture to make it quicker for browsing. Then divide the degraded picture into 9 sectors equally. Click any of the 9 sectors will result a detailed picture for this sector with the same resolution as that of the original picture. This assignment is designed for you to demonstrate your ability to handle pictures.

25.用<<,>>,|,&实现一个WORD(2个字节)的高低位交换!!

26.要开辟P1,P2,P3,P4内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的!

27.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要以数组A作为函数的入口.(建议用冒泡排序法)

28.找错:

#include <string.h>

#include <stdio.h>

class Base

{

private:

char * name;

public:

Base(char * className)

{

name = new char[strlen(className)];

strcpy(name, className);

}

~Base()

{

delete name;

}

char * copyName()

{

char newname [256];

strcpy(newname, name);

return newname;

}

char * getName()

{

return name;

}

static void print(Base base)

{

printf("name: %s\n" , base.name);

}

};

class Subclass : public Base

{

public:

Subclass(char * className) : Base(className)

{

}

};

int main()

{

Base * pBase = new Subclass("test");

Base::print(*pBase);

printf("name: %s\n", pBase->getName());

printf("new name: %s\n", pBase->copyName());

return 0;

}

29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是把接到的这组字符串转换成十进制数字.并将十进制数字返回.

30.编写一个函数将一条字符串分成两部分,将前半部分按ASCII码升序排序,后半部分不变,(如果字符串是奇数则中间的字符不变,)最后再将前后两部分交换,然后将该字符串输出,

测试字符串“ADZDDJKJFIEJHGI”

31.找错

V oid test1()

{

char string[10];

char* str1="0123456789";

strcpy(string, str1);

}

V oid test2()

{

char string[10], str1[10]; for(I=0; I<10;I++)

{

str1[i] ='a';

}

strcpy(string, str1);

}

V oid test3(char* str1)

{

char string[10];

if(strlen(str1)<=10) {

strcpy(string, str1);

}

}

32. 找错

#define MAX_SRM 256

DSN get_SRM_no()

{

static int SRM_no;

int I;

for(I=0;I{

SRM_no %= MAX_SRM;

if(MY_SRM.state==IDLE) {

break;

}

}

if(I>=MAX_SRM)

return (NULL_SRM);

else

return SRM_no;

}

33. 写出程序运行结果

int sum(int a)

{

auto int c=0;

static int b=3;

c+=1;

b+=2;

return(a+b+C);

}

void main()

{

int I;

int a=2;

for(I=0;I<5;I++)

{

printf("%d,", sum(a)); }

}

34.

int func(int a)

{

int b;

switch(a)

{

case 1: 30;

case 2: 20;

case 3: 16;

default: 0

}

return b;

}

则func(1)=?

35:

int a[3];

a[0]=0; a[1]=1; a[2]=2;

int *p, *q;

p=a;

q=&a[2];

则a[q-p]=?

36.

定义int **a[3][4], 则变量占有的内存空间为:_____

37.

编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒。

38.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可以用循环)

我只知道是用递推,大概写了一下,如下:

int IsTwoPow(int s)

{

if(s==1)return FALSE;

s=s>>1;

if(s>1)IsTwoPow(s);

return (s==1)?TRUE:FALSE;//大概是这个意思,但是这一句似乎不该这么返回!

}

39 A,B从一堆玻璃球(共100个)里向外拿球,规则如下:

(1)A先拿,然后一人一次交替着拿;

(2)每次只能拿1个或2个或4个;

(3)谁拿最后一个球,谁就是最后的失败者;

问A,B谁将是失败者?写出你的判断步骤。

40.已知:无序数组,折半查找,各元素值唯一。

函数原型是:Binary_Seach(int array[], int iValue, int iCount)

array是数组,在里面用折半查找的方法找等于iValue的值,找到返回1否则0,iCount是元素个数

41.统计一个字符串中字符出现的次数

42.100位以上的超大整数的加法(主要考虑数据结构和加法的实现)。

43.对如下电文:"CASTCASTSATATATASA"给出Huffman编码。

44.int (* (*f)(int, int))(int)表示什么含义?

45.x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。

46.中缀表达式A-(B+C/D)*E的后缀形式是什么?

47.struct S1

{

char c;

int i;

};

sizeof(S1) = ?

class X{

public:

X();

virtual ~X();

void myMemberFunc();

static void myStaticFunc();

virtual void myVirtualFunc();

private:

int i;

char * pstr;

char a;

}

sizeof(X) = ?

48.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet"

49.有一百个整数,其中有负数,找出连续三个数之和最大的部分.

50.写一程序实现快速排序. 假设数据输入为一文件

快速算法描述如下

Algorithm Partition

Input: sequence a0, ..., an-1 with n elements

Output: permutation of the sequence such that all elements a0, ..., aj are less than or equal to all elements ai, ..., an-1 (i > j)

Method:

choose the element in the middle of the sequence as comparison element x

let i = 0 and j = n-1

while ij

search the first element ai which is greater than or equal to x

search the last element aj which is less than or equal to x

if ij

exchange ai and aj

let i = i+1 and j = j-1

After partitioning the sequence, Quicksort treats the two parts recursively by the same procedure. The recursion ends whenever a part consists of one element only.

51.写一算法检测单向链表中是否存在环(whether there is a loop in a link list),

要求算法复杂度(Algorithm's complexity是O(n)) 并只使用常数空间(space is O(c)).

注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构.

52.设下列函数已经通过了调试

bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray);

该函数在内存中排序,能把字节数最大为100M字节的ArrayType类型的数组排序。其中ArrayType是一个

预定义的数组类型(细节无关紧要),Pinputarray,Poutarray分别为排序前的指针和排序后的指针。

请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务:

输入:排序前的大文件,名称为char * pinoutfilename ,其内容为用分号分隔的ArrayType

类型的数组元素,可装满4个100M字节的数组。

输出:排序后的大文件char * poutoutfilename。

53.用最有效率的方法算出2乘以8等於几?

54.

1.错误的转义字符是(c)

A.'1'

B.'\'

C.'

人事行政总监职位说明书

岗位名称人事行政总监所在部门

直接上级总经理直接下级人事行政专员、系统分析、网络维护

所辖人数岗位分析日期2002年9月本职:负责公司的人力资源及行政工作,保证人事行政工作对公司业务的支持

职责与工作任务:

职责一职责表述:负责拟定人力资源计划

工作

任务

根据公司发展规划,建立山谷蓝、泰科曼的人力资源体系,提出组织结构改进方案和岗位职责设计方案

根据公司发展战略,负责组织制定人力资源战略规划

依据人力资源战略规划并结合公司年度经营计划和预算,组织制定人力资源计划

在公司组织机构发生调整变动时,组织制定人员调整方案并监督实施

职责二职责表述:负责建立健全公司人力资源管理制度并指导落实

工作

任务

组织制定并完善公司招聘、培训、考核、薪酬、保险和福利、人事档案管理等规章制度、实施细则及工作程序并指导落实

组织拟定全公司员工奖惩方案并负责实施

职责三职责表述:收集人事信息,为公司人事决策提供信息支持

工作

任务

定期组织收集有关员工招聘、培训、考核、薪酬等方面的信息,并撰写调查、分析报告,为公司重大人事决策提供信息支持

职责四职责表述:负责组织制定行政管理制度并监督执行

工作

任务

组织制定公司行政办公制度、后勤管理制度并监督执行

组织制定公司公文管理、办公用品采购管理制度并监督执行

职责五职责表述:负责公司行政办公事宜

工作

任务

协助总经理联系公司法律顾问,处理相关法律问题以及保管相关文件

负责公司对外联络事宜

负责公司重大活动的策划、组织与安排

职职责表述:负责组织制定信息化管理制度并监督执行

六工作

任务根据公司信息化管理的要求,组织制定信息化管理制度并监督执行组织进行网络维护,确保网络安全、顺畅运行

负责审核系统升级费用计划和网络维护计划

职责七职责表述:负责本部门内部的组织管理

工作

任务

选拔、配备、考核下属人员,组织部门内部技能培训

指导属下员工制定阶段工作计划并督促执行

负责下属人员的工作分配

制定部门预算,控制费用支出

职责

职责描述:完成总经理交办的其他任务

权力:

对内部招聘制度有审核权、对人员招聘的筛选权和对劳动合同制度的制定权

对员工出勤的监督权和对员工考核数据和事项的核实权

对薪酬管理办法的调整方案有建议权

培训经费的使用管理权

对本部门预算内的费用有审核权

对所属下级的人事管理权

对所属下级的工作有监督、检查权、考核评价权

关键业绩指标:

公司利润

人力资源计划制定的合理性

人事、行政、信息制度制定的合理性

招聘、行政、信息系统问题响应的及时性

系统的安全稳定性

人事、行政档案的完整性

员工的流失率

费用控制

关键业务流程:

人力计划、业绩考评、招聘解聘、培训管理、系统管理、文档管理、薪酬管理、业务计划

工作协作关系:

内部协调关系总经理、公司各部门

外部协调关系高等院校、社会培训机构、人才交流中心、各媒体等任职资格:

教育水平大学本科及以上学历

专业人力资源管理专业、心理学及工商管理等相关专业培训经历管理培训、人力资源管理培训

经验5年以上人力资源管理工作经验

知识通晓人力资源管理知识,掌握行政管理、法律、信息系统管理等知识,了解相关业务领域专业知识

技能技巧较强的政策理论水平,较强的组织协调能力、应对冲突的能力、沟通能力,有较高的写作水平、良好的英语阅读能力和听说能力,熟练使用办公软件,具备基本的网络知识

其它:

工作时间特征正常工作时间,偶尔出差

所需记录文档人事管理制度、工作总结、汇报文件、通知备注:

职位考评说明

职位名称:人事行政总监

考评周期:年度

考评指标(上级):60%

1.费用控制10%

2.利润20%

3.管理协作性20%

4.岗位控制指标50%

-人员流失率10%

-招聘及时率10%

-公司档案完整率10%

-系统问题解决及时性10%

-网络稳定性10%

考评指标(同级):10%

协作性5%

沟通能力5%

考评指标(下级):10%

工作指导5%

问题解决5%

考评指标(自我):20%

人员流失率5%

招聘及时率5%

公司档案完整率5%

协作沟通5%

考评结果使用:

年度奖励发放

业绩奖励:

奖励:工资收入=10:90

其它说明:

工资级别与考核结果挂钩

  据俄罗斯卫星通讯社27日报道,美国国防部周一报告称,自新冠病毒疫情开始以来,美国现役军人、承包商和相关平民中的新冠病毒确诊病例已增至6568例,死亡人数达到27人。

  美国国防部在一份新闻稿中表示,截至目前,共有4213名美国军人感染新冠病毒,91人目前正在仍住院治疗。

  目前美国国防部总共已经报告了2044例康复病例,自上周五以来又新增了355例康复病例和1例死亡病例。

  此前据美国《海军时报》报道,美国海军阿利·伯克级驱逐舰“基德”号上,发现33例新冠肺炎确诊病例它是继“西奥多·罗斯福”号航空母舰之后,第二艘在海上遭遇疫情大暴发的美军军舰。而“罗斯福”号航母上所有舰员都接受了检测,至少856人检测结果为阳性。有海军官员向媒体透露,目前受疫情影响的美军战舰数量已超过40艘,超过美军舰艇总数1/10。

  据Worldometer世界实时统计数据,截至北京时间4月28日6时30分左右,美国累计确诊逾100万例,达1004942例,死亡56527例。

。'

D.'\''

2.若数组名作实参而指针变量作形参,函数调用实参传给形参的是(d)

A.数组的长度

B.数组第一个元素的值

C.数组所有元素的值

D.数组第一个元素的地址

3.变量的指针含意是指变量的(b)

A.值

B.地址

C.存储

D.名字

5.某文件中定义的静态全局变量(或称静态外部变量)其作用域是(d)

A.只限某个函数

B.本文件

C.跨文件

D.不限制作用域

55.

1. 解二次方程:a*x*x+b*x+c

int Quadratic( double a,double b,double c,double& x1,double& x2);

返回值:解的个数

2. 最大公约数

DWORD Divisor( DWORD dwFirst, DWORD dwSecond );

返回值:最大公约数

3. 根据蒙特卡洛算法计算圆周率

double PI( DOWRD dwCount/*测试次数*/ );

返回值:PI

4. 无符号整数乘法,乘数为32bit,结果为64bit

提示:32bit整数分解为16bit相乘

void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );

5. 链表排序(从小到大)

节点定义为:

struct Node{

int nValue;

struct Node* pNext;

};

最后一个节点的pNext = NULL. Node* SortChain( Node* pHead ); 返回值:链表头

。

猜你喜欢

最安全有效的减肥药

最安全有效的减肥药

编辑:小徐

现在的减肥药真的是真假难分,在选择减肥药的同时也应该更加小心,减肥药多种多样,那么如何才能选择最安全有效的减肥药,也成了很多小仙女的内心疑问,下面就跟着纸钞屋第一季迅雷 下载小编一起看一下,如何选择最安全有效的减肥药。 最安全有效的减肥药选购方法 1、首先需要观察产品的外包装,在包装中可以看到其配方是不是含有激素,含有激素的减肥药对身体的内..

吃减肥药失眠

吃减肥药失眠

编辑:小徐

随着现在流行以瘦为美,很多人会不顾身体的健康选择减肥药,达到快速减肥瘦身的效果,但是很多减肥药都是有副作用的,副作用比较轻的就是失眠现象,那么吃减肥药出现失眠是怎么回事儿?如果出现失眠后,我们应该怎样缓解? 吃减肥药失眠是怎么回事 减肥药中富含安非他命,所以减肥药服用了太多会有失眠现象,服用减肥药期间,身体会逐渐出现抗药性,身..

最新文章