C++笔试题.pdf
《C++笔试题.pdf》由会员分享,可在线阅读,更多相关《C++笔试题.pdf(137页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、C+笔试题(二十)网易的笔试题。1、10个人分成4 组 有几种分法?解 法 1:分两步,第一步:有以下九种分组方法。第二步将每种分法的可能组和数相加。1 1 1 7C10(7)1 1 2 6C10(6)*C4(2)1 1 3 5C10(5)*C5(3)1 1 4 4C10(4)*C6(4)/P 2(2)1 2 2 5C10(5)*C5(2)*C(3)2/p 2(2)1 2 3 4C10(4)*C6(3)*C3(2)1 3 3 3C10(3)*C7(3)*C4(3)/P 3(3)2 2 2 4C10(2)*C8(2)*C6(2)/P 3(3)2 2 3 3C10(2)*C8(2)*C6(3)/P
2、 2(2)/P 2(2)解法二:4 10-(C4 l)3 10+(C4 2)2 10-(C4 3)1-10/(4*3*2)每个人有4 中状态,所以有410种如果某一组为空则C4 1 中可能,在这种可能中每个人就有3 种状态,所以要减去(C41)310上述一组为空情况中多减去了有两组为空的情况,所以加(C4 2)2*10上述两组为空情况中多加上了有三组为空的情况,所以减(C4 3)110因为组无分别,所以除以(4*3*2)2、如图:7 8 9 106 1 2 115 4 3 1216 15 14 13设“1”的坐标为(0,0)“7”的坐标为(-1,-1)编写一个小程序,使程序做到输入坐标(X,Y
3、)之后显示出相应的数字。#i ncl u d e v oi d m a i n(v oi d)i nt ci r cl e X,ci r cl e Y,ci r cl e,x,y,nu m,nu m X,nu m Y,i;s ca nf (,%d%d ,&x,&y);计算属于第几圈i f(x=l)ci r cl e X=x;e l s e i f (x=Dci r cl e Y=y;e l s e i f(yci r cl e Y?ci r cl e X:ci r cl e Y;获得本圈第一个数及其坐标nu m =4*(ci r cl e-l)*(ci r cl e-1)+1;nu m X=c
4、i r cl e-l;nu m Y=l-ci r cl e;查询输入坐标对应的数f or(i=0;i 2*ci r cl e-2;i+)i f(nu m X=x&nu m Y=y)(p r i nt f (?,T h e nu m b e r i s :%d n,nu m);r e t u r n;)nu m X一;nu m+;)f or(i=0;i 2*ci r cl e-l;i+)(i f (nu m X=x&nu m Y=y)(p r i nt f(T h e nu m b e r i s:%d n,nu m);r e t u r n;)nu m Y+;nu m+;f or(i=0;i
5、2*ci r cl e-l;i+)(i f (nu m X=x&nu m Y=y)(p r i nt f (,zT h e nu m b e r i s:%d n,nu m);r e t u r n;)nu m X+;nu m+;)f or(i=0;i 3)r e t u r n 0;i f (x0)p r i nt f(z,t oo s m a l l nz,);cont i nu e;i f(y0)p r i nt f C t oo s m a l l n);cont i nu e;i f (zz)p r i nt f C t oo b i g n,z);cont i nu e;i f (
6、z1000000010)p r i nt f (t oo b i g n,z);cont i nu e p r i nt f (%d%d%d,x,z,m e x(x,y,z);)根据这个程序,当已知一个输入,算出输出,如:输 入 1 3 1 则 输 出 1 2 3 输入 123456789 100 21 输出 123456789 2 100C+笔试题(十六)已知类s t r i ng 的原型为cl a s s S t r i ng(p u b l i c:S t r i ng (cons t ch a r *s t r =N U L L);普通构造函数S t r i ng (cons t S
7、t r i ng&);拷贝构造函数 S t r i ng(v oi d);析构函数S t r i ng&op e r a t or =(cons t S t r i ng&);赋值构造函数p r i v a t e:ch a r *m _d a t a;用于保存字符串;请编写S t r i ng 的上述4 个函数。答案:/S t r i ng 的析构函数S t r i ng:S t r i ng(v oi d)/3 分(d e l e t e m _d a t a;/由于m _d a t a 是内部数据类型,也可以写成d e l e t e m _d a t a;)S t r i ng:S t
8、 r i ng(cons t ch a r *s t r)i f(s t r=N U L L)m d a t a =ne w ch a r 1;/若能加N U L L 判断则更好*m _d a t a =,p os t,cont e nt?;)e l s e(i nt l e ng t h =s t r l e n(s t r);m d a t a =ne w ch a r l e ng t h+1;/若能加 N U L L 判断则更好s t r cp y(m _d a t a,s t r);)/拷贝构造函数S t r i ng:S t r i ng(cons t S t r i ng&ot
9、h e r)(i nt l e ng t h =s t r l e n(ot h e r.m _d a t a);m _d a t a =ne w ch a r l e ng t h+1;/若能加 N U L L 判断则更好s t r cp y(m d a t a,ot h e r,m d a t a);)/赋值函数S t r i ng&S t r i ng:op e r a t e =(cons t S t r i ng&ot h e r)(/(1)检查自赋值i f (t h i s =&ot h e r)r e t u r n*t h i s;/(2)释放原有的内存资源d e l e t
10、e m _d a t a;/(3)分配新的内存资源,并复制内容i nt l e ng t h =s t r l e n(ot h e r,m d a t a);m _d a t a =ne w ch a r l e ng t h+l;/若能加 N U L L 判断则更好s t r cp y(m d a t a,ot h e r,m d a t a);/(4)成回本对象的引电r e t u r n*t h i s;)二:改错题,只能在原来的基础上增加代码,不能删除代码 i ncl u d e#i ncl u d ev oi d f oo(i nt a g e,ch a r *b)(b =(ch
11、a r *)m a l l oc(64);s p r i nt f (b,,zY ou r A g e i s%d,z,a g e);)i nt m a i n()(ch a r *f;f oo(23,f);p r i nt f Cz%s n,z,f);答案#i ncl u d e#i ncl u d ev oi d f oo(i nt a g e,ch a r *b)*b =(ch a r *)m a l l oc(64);s p r i nt f (*b,Y ou r A g e i s%dzz,a g e);)i nt m a i n()ch a r *f;f oo(23,f);p r
12、i nt f(%s n”,*f);r e t u r n 0;)请问该程序用的是进程方式还是线程方式,并说明进程与线程的区别:请问该程序输出什么结果?无参考答案四、co n s t an t p o i n t er p o i n t s fo r St r i n gp o i n t er p o i n t s fo r co n s t an t s t r i n g答案:1 co n s t an t p o i n t er p o i n t s fo r St r i n g,指向字符串的静态指针,即该指针只能指向该字符串,但字符串内容可以改变;2、p o i n t er
13、 p o i n t s fo r co n s t an t s t r i n g,指向静态字符串的指针,字符串内容不得改变,但指针可以移动。五、下面等价的是:A i n t i=0i f(p r i n t f(z/hel l o,w o r l d);)B i n t i=l;i n t j-2;i f(i=l|j=2)p r i n t f(hel l o,w o r l d);)C B o o l ean bl=t r u e;B o o l ean b2=t r u e;i f(bl=b2)(p r i n t f(hel l o,w o r l d);)D i n t i=l;
14、i n t j=2;i f(i=l&|j=2)(p r i n t f(hel l o,w o r l d);)个人不太明白&I 的含义,对此题保持沉默,欢迎大家给出答案。六、排序二叉树插入一个节点或双向链表的实现四六 为 I B M 面试题。七、指针+的含义和用法答案:根据指针所指向的类型,移向下一个单元。如:字符串指针+,意为指向下一个元素。八、s t ack 和 heap 的分配,r t o s 的特点、同步的方式九、怎样避免内存泄漏的问题答案:动态分配的内存使用完毕之后及时回收。十、编程实现十进制数转化为十六进制输出,不准用任何已经定义的库函数,比方说St r i n g,M at h
15、o i n t t o H ex (i n t )参考答案:#i n cl u de v o i d mai n ()(i n t n,i=0;char gl am 17 =01234 5 6 7 8 9 A B C D E F ;定义字符表char hex 20=;用于存储转换之后的十六进制数p r i n t f(z/p l eas e en t er n(dec):n );sc a nf&n);do hex i+=gl amn%16;n=n/16;w hi l e(n 0);p r i n t f(hex);十一、编程实现大于100的两个数值相乘的结果输出,同样不准使用任何已定义函数,M
16、 at h,s t r i n g,co n v er t 等。比方说 1234 5*325 34 6 7 7 ,输入为两个 s t r i n g i n t t o P l u s(1234 5,*324 34 6 7 7,)输出为一个长型的大数相乘原理。模仿人手工列竖式。r es u l t i+j+=a i*bj%10;r es u l t i+j+l+=r es u l t i+j/10;十二、i n t del et e(n o de*head)fr ee(head);head二 head-l i n k;r et u r n(0);)指出程序的错误,并且写出正确的程序参考答案:错
17、误:首先释放了 h e a d,再使用时已经不起作用。应使用临时指针变量。i n t d el et e(n o d e*h ea d)n o d e*t emp=h ea d-l i n k;fr ee(h ea d);h ea d=t emp;r et u r n(0);)十三、写一个程序可以算出字节在计算机中的存储是由大到小还是有小到大。十四、一段程序,写出输出结果#i n c l u d e c l a s s A(p u b l i c:v o i d v i r t u a l p r i n t ()c o u t z,A:p r i n t (),z e n d l;);c l
18、 a s s B:p u b l i c A(p u b l i c:v o i d v i r t u a l p r i n t ()c o u t,zB:p r i n t 0,zen d l;);c l a s s C:p u b l i c B(p u b l i c:s t a t i c v o i d p r i n t ()c o u t p r i n t ();a b-p r i n t ();a c-p r i n t ();p r i n t(a);p r i n t(b);p r i n t (c);)答案:A:p r i n t()B:p r i n t()C:p
19、 r i n t()A:p r i n t()B:p r i n t()B:p r i n t()A:p r i n t()A:p r i n t()A:p r i n t()十五、给两个变量,如何找出一个带环单链表中是什么地方出现环的。(答案参考ex p er t Cp r o g r a mmi n g)。先判断有环,步长为1的指针和步长为2的指针重合的地方就是环内的一个节点。以此节点为起点的指针和指向头节点的指针均以步长1 一起走,重合的地方就是环出现的节点。十 h五为M S笔试题。十六、写一个带参数宏 g et _ s t r u c t _ a d d r _ fr o m_ mem
20、b er _ a d d r (p,s t r u,m),能够根据任意结构实体的某一个成员的地址,言出该结而实体的地址,其中参数p是指向该成员的指针,s t r u是该结构体,m是该成员。(S U N试题)r et u r n (s t r u c t s t r u*)(p -(i n t)&(s t r u c t s t r u *)0)-p);十七、给一个函数i n t ma i n()i n t i,n=2 0;fo r (i=0;i n;i-)p r i n t f(一 );r et u r n 0;)要求替换、增加或者减少一个字符,使该程序可以打出2 0个”号,并要求写出三种解法
21、o (s u n试题)参考:l o i 换 成n 2 o i N 换 成-i N十八、解释 t y p ed ef c h a r (*FU N C)(i n t,c h a r*)的含义参考答案:一个函数指针,函数有两个参数,i n t ,c h a r*,返回值为c h a r型。十九、问#i n c l u d e 和#i n c l u d e a b c.h”的区别,#d efi n e MAX _ N U M 1 0 和 c o n s t i n tMAX _ N U M=1 0 区别参*答 案:#i n c l u d e,从标准库函数中开始搜索;#i n c l u d e
22、a b c.h”,从用户工作路径开始搜索,搜索不到,再到库函数中搜索。d efi n e MAX _ N U M 1 0 ,没有数据类型,编译器不进行类型检查,直接替换;c o n s t i n t MAX _ N U M=1 0,为 i n t 型静态变量。二十、问用什么方法可以避免一些潜在错误,比如i f(my v a r =3)这一类编程规范的问题?用 i f(3 =my v a r)就可以在编译时报错十六二十为S U N 笔试题。二十一、用状态机实现1 0 0 1 0 码的探测,如 x=1 0 0 1 0 0 1 0 0 0 z=0 0 0 0 1 0 0 1 0 0 (输出)二十二
23、、给一个数组s r c 1 0 排序,用两种方法,并比较二十三、c /C+的不同新的注释风格,变量作用域,函数重载,操作符重载,缺省参数,按引用传送,内联函数、模版等。二十四、run ti me e nvi rone mnt的应用领域,并给予解释二十五、使用代码或者宏将十进制转化为十六进制格式二十六、实时嵌入系统中,两个任务同时访问R S 2 3 2 c port,设计一个共有的子窜转发二十七、多任务实施系统中,一个任务有多少种状态?描述一个系统怎么工作二十八、选 择 题:c h a r*p,*q=i a m,*g=C h a ne se!”strc py(p,q);strc a t(p,g)
24、;pri ntf p);a.i a m b.i a mC h a ne se!c.i a m C h a ne se!d 都不是二十九、对优先级抢占调度法和时间片轮转调度法的理解三十、哈息表查找的优缺点,并列出你所知道的哈希函数构造法 一、有两个无序链表A 1 和 A 2,写出程序把A 1 和 A 2 合并成一个递增的链表。三十二、a+,+a 中 a的值是先加还是后加的三十三、函数栈中分配空间与全局堆中分配空间的区别和联系三十四、函数体内sta ti c 声明的变量的特殊意义三十五、S truc t xxx xx 2 0 这个是预先申请了内存么?参考答案:是的,struc t xxx xx 2
25、 0 确实已经申请了内存,而 struc t xxx*xx 2 0 则不是事先申请内存,仅表示申明下,后者需要ma lloc 申请内存。三十六、c h a r*p;P=ss”;f or(;*p!=0 ;p+)*p=0问此时p 的值是多少?参考答案:c h a r*的分配是在静态区,当作常量对待,赋值后就不可以修改,这是字符串的用法,如果指向数组就另当别论。这个程序的错误,首先字符串结束要比较 0 而不是0,另外p指向c ons t s t r ing 不能赋值。三十七、c ha r *s t r ing;s t r ing =I a m ok”这个语句有问题么?没有?三十八、关于实现s w a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 笔试
限制150内