牛客网刷题笔记6-22

1.在定义函数中指定的形参,在未出现函数调用是,它们占内存中的存储单元。( )
A.正确
B.错误

答案:B
解析:
  在定义函数中指定的形参变量,在未出现函数调用时,它们并不占用内存中的存储单元,只有在发生函数调用时,函数中的形参才被分配内存单元。
  在调用结束后,形参所占的内存单元也被释放,因此形参只有在函数内部有效。函数调用结束返回主调函数后则不能再使用该形参变量。
  因此题中描述是错误的,本题选B。


2.在下面有关友元函数的描述中,正确的说法是()
A.友元函数是独立于当前类的外部函数
B.一个友元函数不能同时定义为两个类的友元函数
C.友元函数必须在类的外部定义
D.在外部定义友元函数时,必须加关键字friend

答案:A
解析:
  在C++中友元函数是独立于当前类的外部函数,一个友元函数可以同时定义为两个类的友元函数,友元函数既可以在类的内部,也可以在类的外部定义;在外部定义友元函数时,不必加关键字friend


3.执行"int x=1;int y=~x;"语句后,y的值为?

答案:-2
解析:
  假设int占2个字节,那么1的二进制表示是 0000 0001 ,~表示按位取反,则 0000 0001变为 1111 1110,在计算机中整数用补码形式表示,正数的补码是它本身,负数的补码是原数值除符号位按位取反再加一,由补码求原数值也是按位取反再加一,那么 1111 1110 除符号位按位取反再加一变成 1000 0010,即 -2。


4.以下关于抽象类的说法正确的有
A.抽象类只能用作其他类的基类
B.不能使用抽象类定义对象
C.抽象类不能用作参数类型、函数返回类型或显式转换的类型
D.抽象类不能有构造函数和析构函数

答案:ABC
解析:
抽象类有一下几个特点:

(1)抽象类只能用作其他类的基类,不能建立抽象类对象。

(2)抽象类不能用作参数类型、函数返回类型或显式转换的类型。

(3)可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。


5.变量a是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF;变量b是一个64位有符号的整数,初始值用16进制表示为:0x8000000000000000。则a+b的结果用10进制表示为多少?
A.1
B.-1
C.2^63 +2^62+…+2^2 +2^1 +2^0
D.–(2^63+2^62+…+2^2+2^1+2^0)

答案:B
解析:
链接:
  a+b=0xFFFFFFFFFFFFFFFF,十六进制的F对应十进制的15,再转换成二进制则为1111。
  所以a+b得1111 1111 1111 1111,二进制的首尾为符号位,1位负数,0则为正数,这里为1所以a+b的结果是负数。
负数在内存中存储以补码的形式,所以求原码的步骤为:

  1. 补码-1得反码(变为1111 1111 1111 1110)
  2. 反码按位取反得原码(1000 0000 0000 0001)
  3. 转换成二进制结果为-1

6.下面的程序中, int32-t 表示一个有符号的 32 位整数,程序的入口是 main 函数,问最终 res 的结果是多少?
在这里插入图片描述
A.–(2^31+2^30+…+2^2+2^1+2^0)
B.0
C.-1
D.程序会死循环

答案:D
解析:

1.先解释a=128怎么溢出,转为-128的 这是因为128是超出以char为例-128-127的表示范围的。128在有符号中没法表示为1000 0000,实际上他是-0,-0也就是“-128中截断最高位”,所以我理解:128可以表示为-128; 所以a=-128;b=-127;
2. 我再来接着我们开始计算-128-127,即-128+(-127)
注:在计算机中我们都是用补码来计算的
-128源码为1 1000 0000 反码为1 0111 1111 补码为 1 1000 0000(9位)截断最高位为 1000 0000; //这也就是-0可以表示为-128的原因;因为-0源码也是 1000 0000;
-127源码为1111 1111 反码为 1000 0000 补码为 1000 0001
补码相加
-128+(-127)=1000 0000
(+) 1000 0001
= 0000 0001->补码转回源码 0000 0001=1,结果大于0,继续死循环。


7.给定一个如下所示的图,图中的边代表了两个节点间的距离。如果使用迪杰斯特拉算法对节点 1 和节点 8 求最短路径,则当完成计算时,算得节点 1 到节点 8 的最短路径是?同时当完成节点 1 到节点 8 的最短路径计算时,节点 1 到哪些节点(除了 1 和 8 )的最短路径也已经计算完毕?( )
在这里插入图片描述
A.最短路径:7;已经算得最短路的节点:3,5,6
B.最短路径:4;已经算得最短路的节点:5
C.最短路径:4;已经算得最短路的节点:2,3,5,4
D.最短路径:4;已经算得最短路的节点:5,6

答案:C
解析:
迪杰斯特拉最最朴素的思想就是按长度递增的次序产生最短路径。即每次对所有可见点的路径长度进行排序后,选择一条最短的路径,这条路径就是对应顶点到源点的最短路径。
初始状态:路径长度0:(1)
路径长度1:(1,5)
路径长度2:(1,3)
路径长度3:(1,3,4),(1,2)
路径长度4:(1,5,8)
节点1到8的最短路径长度为4; 2,3,4,5节点的最短路径已经计算完毕;


8.有三个程序J1,J2,J3。程序在单核CPU执行时,三个程序需要的资源如下所示:
在这里插入图片描述
优先级高的程序可以抢占优先级低的程序的CPU,但不能抢占IO。问当所有任务执行完毕时,共消耗的时间是?
A.170ms
B.160ms
C.120ms
D.130ms

答案:D
解析:
1.优先级高的先使用资源;2.按照题目中给的各进程CPU,IO顺序执行;3.IO不可抢占。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值