2013年海康威视校园招聘笔试题
1、10、10、4、4四个数,怎么算出24点?点?
(10*10-4)/4=24
2、下列表达式在32位机器编译环境下的值()位机器编译环境下的值()
[cpp]view plaincopy
1 class A
2 {
3 };
4
5 class B
6 {
7 public :
8 B();
9 virtual ~B(); 10 };
11 12 class C 13 { 14 private :
15 #pragma pack(4) 16 int i; 17 short j; 18 float k; 19 char l[64]; 20 long m; 21 char *p; 22 #pragma pack() 23 }; 24 25 26
27 class D 28 { 29 private :
30 #pragma pack(1) 31 int i; 32 short j; 33 float k; 34 char l[64]; 35 long m; 36 char *p; 37 #pragma pack() 38 };
39
40 int main(void ) 41 {
迷惘什么意思
42 printf("%d\n",sizeof (A)); 43 printf("%d\n",sizeof (B)); 44 printf("%d\n",sizeof (C)); 45 print
f("%d\n",sizeof (D)); 46 return 0; 47 }
A、1、4、84、82
B、4、4、82、84
C、4、4、84、82
D、1、4、82、82
3、以下程序在32位机器下运行的结果是()
48 #pragma pack(4)
49 struct info_t
50 {
51 unsigned char version;
52 unsigned char padding;
53 unsigned char extension;
54 unsigned char count;
55 unsigned char marker;
56 unsigned char payload;
57 unsigned short quence;
58 unsigned int timestamp;
59 unsigned int ssrc;
switzerland是什么意思60 };
61 62 union info_u
63 {
64 unsigned char version;
新概念美音版
65 unsigned char padding;
66 unsigned char extension;
67 unsigned char count;
68 unsigned char marker;
69 unsigned char payload;
70 unsigned short quence;
71 unsigned int timestamp;
72 unsigned int ssrc;
73 };
74 #pragma pack()
75 int main(void)
乔治 索罗斯
76 {
77 printf("%d\n",sizeof(info_t));
78 printf("%d\n",sizeof(info_u));
79 return 0;
80 }
A、12 12
B、12 4
C、16 4
D、16 12
E、16 1
4、以下表达式result的值是()
larson
81 #define VAL1(a,b) a*b
82 #define VAL2(a,b) a/b--
83 #define VAL3(a,b) ++a%b
84
85 int a = 1;
86 int b = 2;
87 int c = 3;
88 int d = 3;
89 int e = 5;
90
91 int result = VAL2(a,b)/VAL1(e,b)+VAL3(c,d);
A、-2
B、1
C、0
D、2
B 、
5、请写出以下程序的输出(5分)
92 void swap_1(int a , int b) 93 {
94 int c; 95 c = a; 96 a = b; 97 b = c; 98 return ; 99 } 100 void swap_2(int &a , int &b) 101 {
102 int c; 103 c = a; 104 a = b; 105 b = c; 106 return ; 107
}
108 void swap_3(int *a , int *b)
109 {东莞读音
110 int c; 111 c = *a; 112 *a = *b; 113 *b = c; 114 return ; 115
}
116
117 int main(void ) 118 {
119 int a = 100; 120 int b = 200; 121 swap_1(a , b);
122 printf("a = %d , b = %d\n",a , b); 123 swap_2(a , b);
124 printf("a = %d , b = %d\n",a , b); 125 swap_3(&a , &b);
nfls
126 printf("a = %d , b = %d\n",a , b); 127 return 0; 128
}
输出结果:输出结果:
a = 100 ,
b = 200 \n a = 200 , b = 100 \n a = 100 , b = 200 6、下面的程序是否有问题,如有问题,请重构代码(5分)
129
void test_type(bool b , const char *p *p , , float f) 130
{ 131 if (!b) 132
{ 133 return ; 134
} 135 el if (!p) 136
{ 137 return ; 138
} 139
el if (!f) 140
{ 141 return ; 142 } 143
} 修改如下: 144
void test_type(bool b , const char *p , float f) 145
{ 146 if (!b) 147
{ 148 return ; 149
} 150 el if (!p) 151
{ 152
return ; 153
} 154 el if (f > -1e-10 && f < 1e-10)
155
{ 156
return ;
157 } 158
} 7、请指出以下程序有什么问题(5分)
159 void test_mem() 160 {
161 char *p = new char [64]; 162 delete p; 163 p = NULL; 164 return ; 165
}
应该修改为应该修改为
delete[]p; p 指向的是一个字符型的数组空间,原来的代码只是简单的释放了指向申请空间的指针,并没有释放申请的空间,容易造成内存崩溃。指向申请空间的指针,并没有释放申请的空间,容易造成内存崩溃。
回收用回收用 new 分配的单个对象的内存空间的时候用分配的单个对象的内存空间的时候用 delete ,回收用,回收用
new[] 分配的一组对象的内存空间的时候用的内存空间的时候用
delete[]。 8、以下程序有什么问题,请指出。
166 char * GetMem() 167
{ 168
char p[] = "hello"; 169 return p; 170 } 171
172 void test_get_mem() 173
{ 174
char *p = GetMem(); 175
printf(p); 176 return ; 177
} GetMem 函数中的p 是一个在栈上的局部变量,当函数运行结束的时候,栈上的内容会自
动释放的,此处返回的值有可能会成为一个野指针,会出现一个意想不到的结果。
9、请写出strcpy 和 memcpy 的区别(5分)分) 答:strcpy 和memcpy 都是标准C 库函数,它们有下面的特点。库函数,它们有下面的特点。
strcpy 提供了字符串的复制。即strcpy 只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。外,还会复制字符串的结束符。
strcpy 函数的原型是:char* strcpy(char* dest, const char* src);
公共英语三级报名
memcpy 提供了一般内存的复制。即memcpy 对于需要复制的内容没有限制,因此用途更广。更广。
memcpy 函数的原型是:void *memcpy( void *dest, const void *src, size_t count );
strcpy 和memcpy 主要有以下3方面的区别。方面的区别。
1、复制的内容不同。strcpy 只能复制字符串,而memcpy 可以复制任意内容,例如字符数组、整型、结构体、类等。数组、整型、结构体、类等。
2、复制的方法不同。strcpy 不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy 则是根据其第3个参数决定复制的长度。个参数决定复制的长度。
3、用途不同。通常在复制字符串时用strcpy ,而需要复制其他类型数据时则一般用memcpy 。
10、请写出以下程序的输出结果
sowhat
、请写出以下程序的输出结果
178 class Ba
179 {
180 public:
181 Ba()
182 {
183 printf("I am Ba()\n");bychance
184 }
185 virtual ~Ba()
186 {
187 printf("I am ~Ba()\n");
188 }
189 public:
190 virtual void SayHello()
191 {
192 printf("Hello Ba\n");
193 }
194 void SayWorld()
195 {
196 printf("World Ba\n");
197 }
198 };
199 class Derived : public Ba
200 {
201 public:
202 Derived()
203 {
204 printf("I am Derived()\n");
205 }
206 virtual ~Derived()
207 {
208 printf("I am
~Derived()\n");
209 }
210 public:
211 void SayHello();
212 void SayWorld();
213 };
214
215 void Derived::SayHello()
216 {
217 printf("Hello Derived\n"); 218 }
219 void Derived::SayWorld()
220 {
221 printf("World Derived\n"); 222 }
223