2013年 TCL笔试 嵌入式软件

一、判断题

解:错误,八进制是0-7

解:因为这里的数组已经初始化一部分,所以其他的初始化为0;

       对于未初始化的数组,全局为0,局部随机

解:结果是#x,因为#x不是传参,只是字符串。

解:????个人觉得应该为正确,可以放到内存层面考虑。

解:有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内,如 void fun() const),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。

解: 含有一个纯虚函数的类为纯虚类

 

二、填空题

解:a1---4,

a2---4,

a3,a4—4,

a5---4,

a6---4,

解:

1)移位法:注意负数和正数,正数右移补0,负数右移补1。若是负数,则会陷入死循环!!

2移1法:可以弄一个相同类型的1,不移位本身,移位1,用1&,取对对于位,舒服!!

3)与上自己减1法:比较好,推荐!!

解析3)一个32位的数减1相当于把从后数第一个1及之后的数取反,然后与原数相与就把这些去反以后的位清0了,等到所有的位都被清0,就会跳出循环。这种算法的效率跟1的个数有关,有多少1就循环多少次。老牛了。

0010 1001          减1(第1位的1后面的0全部取反,这里没有,哈哈哈哈,再相与…)

0010 1000

--------------

0010 1000     减1(第4位的1后面的0全部取反,再相与,后面4位都为0)

0010 0111

--------------

0010 0000     减1(第6位的1后面的0全部取反,再相与,后面6位都为0)

0001 1111

--------------

0000 0000

 

解:字符串赋值,会主动加上’\0’,如a2,即使后面已经有‘\0’还是会补上;

       但是如果是单个单个的赋值,如a4,需要手动补上,若是确定长度,最好不要满;

       A1—两个指针大小

       A2—补上一个‘\0’

       A3—看二维数组的维数

       A4—不会自动补充‘\0’

 

 

三、多选题

解:int可以起到进位(去尾)的作用,如2.111---211.1+0.5----211.6----211---2.11

       C和D没有区别,优先级问题。

解:(--m==n++)一次运算 ?--m没有进行运算,所以只自减1次,m=19到b=m++;

解:A取反,B清零,C清零,D不变

解:选ACD。a[i][j]二维数组,a[i]表示第i个一维数组的首地址,C和D等价

解:

A i=99%100+1;

C因为int变量,一旦溢位,又变成1000 0000 0000 0000 0000 0000 0000 0000,变成了负数,所以会推出程序段;

 

解??????

强行解释:

1)func(i)

2)func就是一个地址,此处没有调用,只是相当于一个指针,所以警告无效语句,就跟你写了一个 55;语句,不会报错,但是会警告。

3)func()没有传参,所以报错了ERROR

 

解:C没有大括号{}

解:会话层、表示层、应用层

 

四、简答题

解:#define firstdem(array) sizeof(array)/sizeof(array[0])

       考生答案错误!!

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

五、编程题

 

 

思路1:全部遍历到最后,直接判断最后是否相等,即是否相交!!然后一个个地出,直到不相等!!考生用了两个while,复杂度N2,低级、暴力!!

思路2:遍历链表,记录长度。同时遍历两个链表到尾部,同时记录两个链表的长度。若两个链表最后的一个节点相同,则两个链表相交。

有两个链表的长度后,我们就可以知道哪个链表长,设较长的链表长度为len1,短的链表长度为len2。 则先让较长的链表向后移动(len1-len2)个长度。然后开始从当前位置同时遍历两个链表,当遍历到的链表的节点相同时,则这个节点就是第一个相交的节点。

思路3:

 

猜你喜欢

转载自blog.csdn.net/weixin_41939983/article/details/108419913