标签:style class tar ext color c
1 1. 引用与指针有什么区别?
2
3 2. 堆栈溢出一般是由什么原因导致的?
4
5
6 3. 什么函数不能声明为虚函数?
7
8
9 4. 写出float x 与“零值”比较的if语句。
10
11
12 5. 不能做switch()的参数类型是:
13
14
15 6. 头文件中的 ifndef/define/endif干什么用?
16
17
18 7. #include 和 #include "filename.h" 有什么区别?
19
20
21 8. 在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?
22
23
24 9.char str1[] = "abc";
25 char str2[] = "abc";
26 const char str3[] = "abc";
27 const char str4[] = "abc";
28 const char *str5 = "abc";
29 const char *str6 = "abc";
30 char *str7 = "abc";
31 char *str8 = "abc";
32 cout << ( str1 == str2 ) << endl;
33 cout << ( str3 == str4 ) << endl;
34 cout << ( str5 == str6 ) << endl;
35 cout << ( str7 == str8 ) << endl;
36 结果是:
37
38 10.
39 main()
40 {
41 int a[5]={1,2,3,4,5};
42 int *ptr=(int *)(&a+1);
43 printf("%d,%d",*(a+1),*(ptr-1));
44 }
45 输出结果是:
46
47
48 11. 交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;
49
50
51 12. 列举几种进程的同步机制,并比较其优缺点。
52
53
54 13. 进程死锁的原因和4个必要条件
55
56
57 14. 要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234; 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
58
59
60 15.
61 unsigned char *p1;
62 unsigned long *p2;
63 p1=(unsigned char *)0x801000;
64 p2=(unsigned long *)0x810000;
65 请问
66 p1+5=______;
67 p2+5=______;
68
69 16、设有以下说明和定义:
70 typedef union {long i; int k[5]; char c;} DATE;
71 struct data { int cat; DATE cow; double dog;} too;
72 DATE max;
73 则语句 printf("%d",sizeof(too)+sizeof(max));的执行结果是:______
74
75
76
77 试题1:
78
79 Void test1()
80 {
81 char string[10];
82 char* str1="0123456789";
83 strcpy(string, str1);
84 }
85
86 试题2:
87
88 Void test2()
89 {
90 char string[10], str1[10];
91 for(I=0; I<10;I++)
92 {
93 str1[i] =‘a‘;
94 }
95 strcpy(string, str1);
96 }
97
98 试题3:
99
100 Void test3(char* str1)
101 {
102 char string[10];
103 if(strlen(str1) <= 10)
104 {
105 strcpy(string, str1);
106 }
107 }
108 在swap函数中,p是一个“野”指针,有可能指向系统区,导致程序运行的崩溃。在VC++中DEBUG运行时提示错误“Access Violation”。该程序应该改为:
109
110
111
112
113 试题4:
114
115 void GetMemory( char *p )
116 {
117 p = (char *) malloc( 100 );
118 }
119 void Test( void )
120 {
121 char *str = NULL;
122 GetMemory( str );
123 strcpy( str, "hello world" );
124 printf( str );
125 }
126
127 试题5:
128
129 char *GetMemory( void )
130 {
131 char p[] = "hello world";
132 return p;
133 }
134 void Test( void )
135 {
136 char *str = NULL;
137 str = GetMemory();
138 printf( str );
139 }
140
141 试题6:
142
143 void GetMemory( char **p, int num )
144 {
145 *p = (char *) malloc( num );
146 }
147 void Test( void )
148 {
149 char *str = NULL;
150 GetMemory( &str, 100 );
151 strcpy( str, "hello" );
152 printf( str );
153 }
154
155
156
157 试题7:
158
159 void Test( void )
160 {
161 char *str = (char *) malloc( 100 );
162 strcpy( str, "hello" );
163 free( str );
164 //省略的其它语句
165 }
166 评价以上程序
167
168
169
170 试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)
171
172
173
174
175 试题2:以下为Windows NT下的32位C++程序,请计算sizeof的值
176 void Func ( char str[100] )
177 {
178 sizeof( str ) = ?
179 }
180 void *p = malloc( 100 );
181 sizeof ( p ) = ?
182 解答:
183
184
185
186 试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?
187 least = MIN(*p++, b);
188 解答:
189
190
191
192
193 试题4:为什么标准头文件都有类似以下的结构?
194
195 #ifndef __INCvxWorksh
196 #define __INCvxWorksh
197 #ifdef __cplusplus
198 extern "C" {
199 #endif
200
201 #ifdef __cplusplus
202 }
203 #endif
204 #endif
205 解答:
206
207
208
209 试题5:编写一个函数,作用是把一个char组成的字符串循环右移n个。比如原来是“abcdefghi”如果n=2,移位后应该是“hiabcdefgh”
210 函数头是这样的:
211 //pStr是指向以‘\0‘结尾的字符串的指针
212 //steps是要求移动的n
213 void LoopMove ( char * pStr, int steps )
214 {
215 //请填充...
216 }
217 解答:
218
219
220
221 试题6:已知WAV文件格式如下表,打开一个WAV文件,以适当的数据结构组织WAV文件头并解析WAV格式的各项信息。
222 WAVE文件格式说明表
223 偏移地址 字节数 数据类型 内 容
224 文件头
225 00H 4 Char "RIFF"标志
226 04H 4 int32 文件长度
227 08H 4 Char "WAVE"标志
228 0CH 4 Char "fmt"标志
229 10H 4 过渡字节(不定)
230 14H 2 int16 格式类别
231 16H 2 int16 通道数
232 18H 2 int16 采样率(每秒样本数),表示每个通道的播放速度
233 1CH 4 int32 波形音频数据传送速率
234 20H 2 int16 数据块的调整数(按字节算的)
235 22H 2 每样本的数据位数
236 24H 4 Char 数据标记符"data"
237 28H 4 int32 语音数据的长度
238 解答:
239
240
241
242 试题7:编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:
243 class String
244 {
245 public:
246 String(const char *str = NULL); // 普通构造函数
247 String(const String &other); // 拷贝构造函数
248 ~ String(void); // 析构函数
249 String & operate =(const String &other); // 赋值函数
250 private:
251 char *m_data; // 用于保存字符串
252 };
253
254 解答:
255
256
257
258 试题8:请说出static和const关键字尽可能多的作用
259 解答:
260
261
262
263 试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
264 解答:
265
266
267
268 试题2:写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
269 解答
270
271
272
273
274 试题3.不用第三变量交换两个数
275
276
277
278 试题4.求大数的阶乘例如100!,使用通常的做法会溢出,这里要使用数组的方法。例如:123*20 相当于 100*20 + 20*20+3*20
279 1.设一棵完全二叉树有700个结点,则在该二叉树中有多少个叶子结点
280
281
282 2.static 数据成员必须在类定义的外部定义。不象普通数据成员,static成员不是通过类构造函数进行初始化,而是应该在定义时进行初始化。
283
284
285
286 3.求函数返回值,输入x=9999;
287 int func ( x )
288 {
289 int countx = 0;
290 while ( x )
291 {
292 countx ++;
293 x = x&(x-1);
294 }
295 return countx;
296 }
297 输出为:
298
299
300 4.分析下面的程序
301 struct s1
302 {
303 int i: 8;
304 int j: 4;
305 int a: 3;
306 double b;
307 };
308 struct s2
309 {
310 int i: 8;
311 int j: 4;
312 double b;
313 int a:3;
314 };
315 printf("sizeof(s1)= %d\n", sizeof(s1));
316 printf("sizeof(s2)= %d\n", sizeof(s2));
317 result: 16, 24
318 第一个struct s1
319 {
320 int i: 8;
321 int j: 4;
322 int a: 3;
323 double b; };
324
325 5.在对齐为4的情况下 分析下面程序的结果
326 struct BBB
327 {
328 long num;
329 char *name;
330 short int data;
331 char ha;
332 short ba[5];
333 }*p;
334 p=0x1000000;
335 p+0x200=____;
336 (Ulong)p+0x200=____;
337 (char*)p+0x200=____;
338
339 6.分析一下下面程序的输出结果
340 #i nclude
341 #i nclude
342 #i nclude
343 #i nclude
344 #i nclude
345 #i nclude
346 typedef struct AA
347 {
348 int b1:5;
349 int b2:2;
350 }AA;
351 void main()
352 {
353 AA aa;
354 char cc[100];
355 strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
356 memcpy(&aa,cc,sizeof(AA));
357 cout << aa.b1 <<endl;
358 cout << aa.b2 <<endl;
359 }
360
361
362 7.改错:
363 #i nclude
364 int main(void) {
365 int **p;
366 int arr[100];
367 p = &arr;
368 return 0;
369 }
370
371
372
373 8.写一个内存拷贝函数,不用任何库函数.
374
375
376 9.将一个数字字符串转换为数字."1234" -->1234
377
378
379 10.写出运行结果
380 #include
381 #include
382 #define STRCPY(a, b) strcpy(a##_p, #b)
383 #define STRCPY1(a, b) strcpy(a##_p, b##_p)
384 int main(void) {
385 char var1_p[20];
386 char var2_p[30];
387 strcpy(var1_p, "aaaa");
388 strcpy(var2_p, "bbbb");
389 STRCPY1(var1, var2);
390 STRCPY(var2, var1);
391 printf("var1 = %s\n", var1_p);
392 printf("var2 = %s\n", var2_p);
393 return 0;
394 }
395
396
397 11:此题考查的是C的变长参数,就像标准函数库里printf()那样.
398 #include
399 int ripple ( int , ...);
400 main()
401 {
402 int num;
403 num = ripple ( 3, 5,7);
404 printf( " %d" , num);
405 }
406
407
408 int ripple (int n, ...)
409 {
410 int i , j;
411 int k;
412 va_list p;
413 k= 0; j = 1;
414 va_start( p , n);
415 for (; j
416 {
417 i = va_arg( p , int);
418 for (; i; i &=i-1 )
419 ++k;
420 }
421 return k;
422 }
423 这段程序的输出是:
424 (a) 7 (b) 6 (c) 5 (d) 3
425
426
427 12.要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234;
428 那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
429
430
431 13.C++中为什么用模板类
432
433
434
435 部分IT公司的笔试小算法题精选
436 1、将一整数逆序后放入一数组中(要求递归实现)
437
438
439 2、求高于平均分的学生学号及成绩(学号和成绩人工输入)
440
441 3、递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
442
443
444 4、组合问题(从M个不同字符中任取N个字符的所有组合)
445
446
447 5、分解成质因数(如435234=251*17*17*3*2,据说是华为笔试题)
448
449
450 6、寻找迷宫的一条出路,o:通路; X:障碍。(大家经常谈到的一个小算法题)
451
452
453 7、随机分配座位,共50个学生,使学号相邻的同学座位不能相邻(早些时候用C#写的,没有用C改写)。
454
455
456 8、求网格中的黑点分布。现有6*7的网格,在某些格子中有黑点,已知各行与各列中有黑点的点数之和,请在这张网格中画出黑点的位置。(这是一网友提出的题目,说是他笔试时遇到算法题)
457
458
459 9、有4种面值的邮票很多枚,这4种邮票面值分别1, 4, 12, 21,现从多张中最多任取5张进行组合,求取出这些邮票的最大连续组合值。(据说是华为2003年校园招聘笔试题)
460
461
462 10、大整数数相乘的问题。(这是2002年在一考研班上遇到的算法题)
463
464
465 11、求最大连续递增数字串(如“ads3sl456789DF3456ld345AA”中的“456789”)
466
467
468 12、四个工人,四个任务,每个人做不同的任务需要的时间不同,求任务分配的最优方案。(2005年5月29日全国计算机软件资格水平考试——软件设计师的算法题)。
469
470
471 13、八皇后问题,输出了所有情况,不过有些结果只是旋转了90度而已。(回溯算法的典型例题,是数据结构书上算法的具体实现,大家都亲自动手写过这个程序吗?)
472
473
474 14、实现strstr功能,即在父串中寻找子串首次出现的位置。(笔试中常让面试者实现标准库中的一些函数)
475
476
477 15、现在小明一家过一座桥,过桥的时候是黑夜,所以必须有灯。现在小明过桥要1分,小明的弟弟要3分,小明的爸爸要6分,小明的妈妈要8分,小明的爷爷要12分。每次此桥最多可过两人,而过桥的速度依过桥最慢者而定,而且灯在点燃后30分就会熄灭。问小明一家如何过桥时间最短?(原本是个小小智力题,据说是外企的面试题,在这里用程序来求解)
478
479
480 16、2005年11月金山笔试题。编码完成下面的处理函数。函数将字符串中的字符‘*‘移到串的前部分,前面的非‘*‘字符后移,但不能改变非‘*‘字符的先后顺序,函数返回串中字符‘*‘的数量。如原始串为:ab**cd**e*12,处理后为*****abcde12,函数并返回值为5。(要求使用尽量少的时间和辅助空间)
481
482
17、2005
标签:style class tar ext color c
原文地址:http://blog.csdn.net/sundaboke/article/details/25404469