A g(f(3)) B f(g(3)) C g(f(3)+2) D p= f(g(3)+1)
5.设int * p2=&x,* p1=a;p2= *b;则a和b的类型分别是( )。B(3分) A int * 和int B int * 和int ** C int 和int * D int * 和int *
6. 程序员规范中要求不要写出类似(++i)+(i++) 或 f(++i,i++)这样的代码,请说明原因。(8分)
计算子表达式的顺序由编译器决定的,虽然参数的压栈顺序在给定的调用方式下式固定的, 但参数表达式的计算顺序也由编译器决定的。不同的编译器或不同的表达式计算的顺序可能不一致。
7. 说明类中的public、 protected和 private成员函数分别在public、protected和private继承方式下在派生类中的可访问性。(10分)
重点是基类中的任何Private在派生类中都是不可访问的。
8. 请指出这个程序里的不正确的地方(18分) char *getString() {
return (char*)malloc(800); } int main() { char *str; str = getString();
pintf(―%s‖,str); return 0; }
错误在于:
在前面的函数中。malloc分出来的空间被放在了一个栈上面 主函数使用了这个函数后操作系统后弹出栈顶 也就是这块空间被shi放了(9分)
后面那个printf打印的本来是指向栈顶的那个地址的。。 但现在弹出了
所以不知道指到哪里去了
也不会得到自己想要的打印结果(9分)
公共部分(50分)
1:作业调度程序从处于___ D ____状态的队列中选择适当的作业投入运行。(3分) A.运行 B.提交 C.完成 D.后备
2. SQL语言中,删除一个表的命令是 ( B )(3分)
A.CLEAR TABLE B.DROP TABLE C.DELETE TABLE D.REMOVE TABLE
3:ATM采用的线路复用方式为 C 。 (3分) A. 频分多路复用
B. 同步时分多路复用 C. 异步时分多路复用 D. 独占信道
4:数据库中只存放视图的 ( C )(3分) A.操作 B.对应的数据 C.定义 D.限制
5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10分)
虚拟设备是通过虚拟技术将一台独占设备变换为若干台逻辑设备,供若干个用户进程同时使用,通常把这种经过虚拟技术处理后的设备称为虚拟设备。(5分)
在操作系统设备管理中,引入虚拟设备是为了克服独占设备速度较慢、降低设备资源利用率的缺点,从而提高设备的利用率。(5分)
6:TCP为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16分) 三次握手是为了防止已失效的连接请求再次传送到服务器端。 (6分)
二次握手不可行,(2分)因为:如果由于网络不稳定,虽然客户端以前发送的连接请求以到达服务方,但服务方的同意连接的应答未能到达客户端。则客户方要重新发送连接请求,若采用二次握手,服务方收到重传的请求连接后,会以为是新的请求,就会发送同意连接报文,并新开进程提供服务,这样会造成服务方资源的无谓浪费(8分)。
7:什么是分布式数据库?(12分,每点4分) 数据库分布在计算机网络的不同计算机上,
网络中的每个节点具有独立处理的能力(场地自治),可以执行局部应用, 同时,每个节点也能通过网络通信子系统执行全局应用。
C++部分(50分)
1. 设有―int w[3][4];‖,pw是与数组名w等价的数组指针,则pw的初始化语句为
____________________ int (* pw)[4]=w;(3分)
1. 要使引用pr代表变量―char * p;‖,则pr的初始化语句为_______________ 。 char * &pr=p;(3分)
3.―零值‖可以是0, 0.0 , FALSE或者―空指针‖。例如 int 变量 n 与―零值‖比较的 if 语句为:if ( n == 0 ),则BOOL flag 与―零值‖比较的 if 语句为:____________________________;float x 与―零值‖比较的 if 语句为:____________________________。(6分) if ( flag )
const float EPSINON = 0.00001;if ((x >= – EPSINON) && (x <= EPSINON))
4. 设有如下语句:(3分) int x; ( ) *px=0;
则选择以下哪条语句可将x值置为0。C A int * px; B int const * px=&x; C int * const px=&x; D const int * px=&x;
5. 设void f1(int * m,long & n);int a;long b;则以下调用合法的是( )。B(3分) A f1(a,b); B f1(&a,b); C f1(a,&b); D f1(&a,&b);
6. 请写出如下代码的运行结果(6分) int main() {
int a,b,c,d; a=0; b=1; c=2; d=3;
printf(―%d‖,a+++b+c+++d++); } 6