2020-3-9刷题

和自甴很熟 提交于 2020-03-09 13:38:58

以下代码输出什么?  B

int a =1,b =32 ;
printf("%d,%d",a<<b,1<<32);

1,1

B  1,0

C  0,0

D  0,1

 
<< 左移 用来将一个数的各二进制位全部左移N位,高位舍弃,低位补0。
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0。
左移运算符(<<)将其左侧运算对象每一位的值向左移动其右侧运算对象指定的位数。

a的二进制值:0000 0001

b的二进制值:0010 0000

a<<b:a左移32位,得到结果1。

进行探索,

当a左移1位,printf("%d",a<<1); 打印结果是:2

当a左移2位,printf("%d",a<<2); 打印结果是:4

......

当a左移30位,printf("%d",a<<30); 打印结果是:1073741824

当a左移31位,printf("%d",a<<30); 打印结果是:-2147483648

当a左移32位,printf("%d",a<<30); 打印结果是:1

当a左移33位,printf("%d",a<<30); 打印结果是:2

当a左移34位,printf("%d",a<<30); 打印结果是:4

......

当a左移34位,printf("%d",a<<30); 打印结果是:4

...

当a左移62位,printf("%d",a<<30); 打印结果是:1073741824,得到:a<<30  ==  a<<62,30和62相差32

当a左移63位,printf("%d",a<<30); 打印结果是:-2147483648,得到:a<<31  ==  a<<63,31和63相差32

当a左移64位,printf("%d",a<<30); 打印结果是:1,得到:a<<32  ==  a<<64,32和64相差32

从表象来看,每左移32位便相当于没有移位的结果,猜到可能跟int类型占32位有关,事实的确这样:sizeof(int) = 4字节(b) = 32比特(bit)

通过以上推理得到公式:int a << b 可以理解为 int a << (b%32)

按照题意:int a =1,b =32,a<<b = a<<(32%32) = a<<0 = 1

而1<<32就是0000 0001 左移32位,高位舍弃,低位补0,最终则得到结果:0

 

(ps:个人目前的想法,可能不严谨,尚未找到权威答案,后续补充,欢迎提意见。其中部分思路来源于int类型左移位数超过32位的问题,比如1左移50位结果是什么


具有相同类型的指针类型变量p与数组a,不能进行的操作是: D

 

A  p=a;

 

B  *p=a[0];

 

C  p=&a[0];

 

D  p=&a;
 
a是二级指针,直接赋值给指针变量P会出现问题。

以下序列中不可能是一棵二叉查找树的后序遍历结构的是: B
A  1,2,3,4,5
3,5,1,4,2
C  1,2,5,4,3
5,4,3,2,1

上网的时候发现网页不能访问,QQ使用正常,出现此问题最可能的原因是

A  网线问题
B  DNS问题
C  IP地址冲突
D  网关错误
 
可能原因:网页本身的错误;浏览器故障;系统故障;
系统故障1:DNS服务器出错 2.HTTP代理错误 3.winsock恶意篡改

 有9个球,其中一个的质量与其他的不同,有一个天平,通过最多几次可以找出那个质量不一样的球? B

A  2

B  3

C  4

D  5

 

链接:https://www.nowcoder.com/questionTerminal/2b1ac592b56745b2969672c1c4e0d2c5?orderByHotValue=0&done=0&pos=3&mutiTagIds=602&onlyReference=false
来源:牛客网

此题说的是最多几次,如果是最少的话的,一次就有可能 如果一开始拿了8球分摊,如果相等,则剩下的就只有一个球,则这个球就是答案。
现在异常的球的质量为b,正常的球的质量是a。(a!=b)
选择6个球,放在天平上进行称量,每边都是三个。
1.如果天平没有倾斜,则表示这6个球都是正常的,即另外3个球中有一个球是b,则只需要拿其中一个球称量与另外两个球分别称量一次即可。如果两次都倾斜,则表示你拿的是异常的,反之,只有另一种可能,一次没有倾斜,一次倾斜,则一次没有倾斜的肯定都是a,剩余的就一定是b。
2.如果天平发生了倾斜,则表示这6个球中有一个是异常的。假设为a,a,a与a,b,a。拿另外3个替换左边3个或右边3个,如果天平没有倾斜,则可以得出替换掉的3个中有一个是异常的,如果倾斜,也可得到没有替换的3个中有一个是异常的,同时也可以得到a与b之间的关系(自己想一想)。知道有异常球的3个后,只要再任意拿其中2个,进行比较一次,如果相等,则另外一个是异常的,否则的话可以根据a与b之间的大小判定异常球!
总共才3次称量。

给字母重新进行二进制编码,以使得"MT-TECH-TEAM"(包含连字符,不包含引号)的长度最小.并能够根据编码,解码回原来的字符串.请问最优编码情况下该字串的长度是多少bit?   B
A  12
B  33
C  36
D  84
E  96

以下哪个ip不和10.11.12.91/28处于同一个子网  D
A  10.11.12.85/28
B  10.11.12.88/28
C  10.11.12.94/28
D  10.11.12.97/28

对进程和线程的描述,以下正确的是(  D )

A  父进程里的所有线程共享相同的地址空间,父进程的所有子进程共享相同的地址空间
B  改变进程里面主线程的状态会影响到其他线程的行为,改变父进程的状态不会影响到其他子进程
C多线程会引起死锁,而多进程不会
D  其他选项都不正确
 
A 答案错误 只有线程才能使用共同的父进程的地址空间 而子进程会会拥有自己的独立地址空间
https://segmentfault.com/q/1010000008695285/a-1020000008697506

B 答案错误 主进程的行为会影响子进程

C答案错误 多进程也会引起死锁

开发C代码时,经常见到如下类型的结构体定义:

typedef struct list_t{
    struct list_t *next;
    struct list_t *prev;
    char data[0];
}list_t;

请问在32位系统中,sizeof(list_t)的值为?   B

A  4byte
B  8byte
C  5byte
D  9byte

以下哪个属于在预编译阶段执行____,以下哪些指令属于操作符___C

a:malloc;  b:++;  c:#pragma;  d:sizeof;   e:#define

A  预编译c,e 操作符a,b
B  预编译c,d 操作符b,e
C  预编译c,e 操作符b,d
D  预编译a,d 操作符b,d

假设在x86平台上,有一个int型变量,在内存中的内部由低到高分别是:0x12,0x34,0x56,0x78当通过网络发送该数据时,正确的发送顺序是( B )
A  0x12,0x34,0x56,0x78
B  0x78,0x56,0x34,0x12
C  0x34,0x12,0x78,0x56
D  0x56,0x78,0x12,0x34
 
网络发送中是大端模式,低位高地址。

一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足?  C
A  所有的结点均无左孩子
B  所有的结点均无右孩子
C  只有一个叶子结点
D  是一棵满二叉树
 
先序遍历序列与后序遍历序列正好相反的树,结构如下:
 

先序遍历序列:ABCDE
中序遍历序列:EDCBA
后序遍历序列:EDCBA
这棵树的特点:
①先序和中序遍历序列正好相反
②中序和后序遍历序列一样


 

另一个树,不符合本题描述,作为补充扩展。

 

 

 

先序遍历序列:ABCDE
中序遍历序列:ABCDE
后序遍历序列:EDCBA
这棵树的特点:
①先序和中序遍历序列一样
②中序和后序遍历序列正好相反

 
 
 
 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!