a、4321 b、1234 c、1432 d、3241
队列是先进先出的,所以答案是B、1 2 3 4
20、若进栈顺序为1,2,3,4,假定进栈和出栈可以穿插进行,
则可能的出栈顺序为:
a、2413 b、3142 c、3412 d、1234
答案是:D。分析过程如下:
A,第一个为2第二个为4,可以确定栈中是3,1所以应该是2431
B,第一个为3,则栈中2,1。第二个可能是24,但肯定不是1
C,第一个为3,第二个为4,则栈中是2,1,所以应该是3421
D,由于进栈和出栈可以穿插进行,所以1进,1出,2进, 2出,3进,3出,4进,4出。
21、算法的空间复杂度指
a、算法程序的长度
b、算法程序的指令条数
c、算法程序占的存储空间
d、算法执行过程中所需的存储空间
答案是D,因为,空间复杂度指的就是:程序执行过程中由于需要,所申请的内存空间。
22、某数列有1000个各不相同的单元,有低到高排列,要对该数进行二分法检索
,最坏的情况下,需要检查多少个单元
a、1000 b、10 c、100 d、500
答案是B,
因为,因为2^9=512,不够检索完1000个,
那么:2^10=1024,就够检索完1000个了。
二分查找次数以2为基数,2的10次方为1024,
完全可以查找到,所以最多只需要10次即可。
23、已知数组A中,每个元素A[I][J]在存储时要占3个字节,设I从0变到4,
J从0到9,分配内存从地址SA开始连续按行存储分配的。问:A[4][7]的起始地址为:
a、SA+84 b、SA+99c、SA+120 d、SA+141
答案是D,
因为,数组的首个元素也就是数组的首地址是A[0][0],
那么A[4][7]就是第5行的第8列,一个元素3个字节,
那么一行(J最大为9,就是10列)10*3=30个字节,
前4行4*30=120,再加上7个7*3,
结果就是:4*10*3+7*3=141。
24、使用双向链表存放数据的优点是
a、提高检索速度 b、方便的插入和删除数据
c、节约存储空间 d、很快回收存储空间
答案是B,因为,
链表优点:
1)插入和删除元素不需要移动其余元素,效率高;
2)不要求连续空间,空间利用效率高
链表缺点:
1)不提高随机访问元素的机制
2)查找元素和搜索元素的效率低
25、若某链表最常用的操作是在最后一个结点之后插入一个结点并删除最后一个
结点,则采用____存储方式最省时间
a、单链表
b、双链表
c、带头节点的双循环链表
d、单循环链表
答案是C,因为,
双循环链表能够通过头结点的前驱就是尾结点,能够迅速找到尾结点,然后进行插入和删除操作
26、在理想情况下,散列表中查找元素所需比较次数为:
a、n b、0 c、n/2 d、1
答案是D,因为,
散列方法不同于顺序查找、二分查找、二叉排序树及B-树上的查找。
它不以关键字的比较为基本操作,采用直接寻址技术。
在理想情况下,无须任何比较就可以找到待查关键字,查找的期望时间为O(1)。
27、Ethernet属于数据链路层协议
答案是正确的。因为:
数据链路层的主要协议有:
(1)Point-to-Point Protocal PPP点到点
(2) Ethernet 以太网
(3) High-Level Data Link Control ProtocalHDLC高级链路控制协议
(4) Frame Relay 帧中继
(5) Asynchronous Transfer ModeATM
28、普通交换机和路由器工作在
a、数据链路层和传输层
b、链路层和网络层
c、都是网络层
d、网络层和传输层
答案是B,因为,
交换机主要工作在数据链路层(第二层)
路由器工作在网络层(第三层)。
29、以太网的MTU值为
a、500 b、1492 c、1500 d、1982
答案是C,因为
最大传输单元MTU=1500是国际规定的默认值,
是一个经过实验得到的可以最大效率传输数据的值。
倘若大于1500,数据传输速度就会变慢;
若小于1500,链路又得不到充分利用,减小了效率。
30、在一个Windows SDK 的基本应用程序框架中,有如下消息循环:
while(GetMessage(&Msg,NULL,0,0) {
TranslateMessage(&Msg)
DispatchMessage(&Msg)
}
下面哪个消息使得该消息循环退出运行,从而终止整个应用程序的运行
a、WM_DESTROY b、WM_QUIT c、WM_CLOSR d、WM_CREATE
答案是B,因为
WM_CLOSE:关闭应用程序窗口
WM_DESTROY:关闭应用程序
WM_QUIT:关闭消息循环
只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失)。
31、进程和线程最主要的区别:
a、CPU调度方式不同 b、优先级不同
c、程序入口不同 d、进程有独立的地址空间,线程共享地址空间
答案是D,
进程和线程的主要差别在于它们是不同的操作系统资源管理方式。
进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,
而线程只是一个进程中的不同执行路径。
线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,
一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,
但在进程切换时,耗费资源较大,效率要差一些。
32、以下哪项不适合用于进程间通讯
a、socket b、Pipe c、共享内存 d、全局变量
答案是D,
Windows中进程间通信方式有:
File, 管道(Pipe),命名管道(named pipe),信号(Signal),消息队列(Message queue),
共享内存(shared memory),内存映射(memory –mapped file),信号量(semaphore),
套接口(Socket),命名事件。临界区事实上应该算是由信号量来保证的。
全局变量不能用于进程间通讯。
第一题char
*a="abc"
是把字符串“abc”的首地址赋值给指针变量a;
char
b[]="abc"
定义一个字符串数组,因为是字符串
“abc”最后有一个‘\0’
数组长度为4
char
c[3]="abc"
写法有问题,由于数组大小给定为3,最后一个‘\0’写不进数组,有的编译器会报错。
第二题
1)
struct
结构体分配内存特点是:大小等于所有成员所点内存大小的和。
union
联合体分配内存特点是:大小等于成员中占内存最大的内存的大小。所以一共是4个int
13个char
答案是:4*4+13*1=29(相信自己做的)
2)
答案是3
PS:谁给的答案,坑爹呢吧
3)
答案是8
PS:不要被迷惑,这题是陷阱,指针的大小都是无符号长整型
大小是8
4)
答案是6,8(同上题),4。
第三题
1)
答案是
Output1
=
test1_1
Output1
=
test2
Output1
=
test1_1_1
2)(1)头文件没有标准输入输出
#include<stdio.h>
(9)错,左值为指针,右值为数组元素,不能赋值,所以应改为char
*s=&src[len]
(11)不应是指针之间的赋值,应该是内容赋值,所以改为
*d++=*s--
(12)如果按%s即字符串输出的话,dest所指的字符串结尾没有‘\0'结尾可能出现溢出,解决的方法是在(12)前加一句
*d='\0'
有不清楚的扣729480205,一起学习
一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)
1、有数组定义inta={{1},{2,3}}则a[0]的值为0。()
2、int(*ptr)(),则ptr是一维数组的名字。()
3、指针在任何情况下都可进行>,<,>=,<=,==运算。()
4、switch(c)语句中c可以是int,long,char,float,unsignedint类型。()
5、#defineprint(x)printf("theno,"#x",is")
二、填空题(共30分)
1、在windows下,写出运行结果,每空2分,共10分。
charstr[]="Hello"
char*p=str
intn=10
sizeof(str)=()
sizeof(p)=()
sizeof(n)=()
voidfunc(charstr[100])
{}
sizeof(str)=()
2、voidsetmemory(char**p,intnum)
{*p=(char*)malloc(num)}
voidtest(void)
{char*str=NULL
getmemory(&str,100)
strcpy(str,"hello")
printf(str)
}
运行
test函数有什么结果?()
10分
3、设
intarr[]={6,7,8,9,10}
int*ptr=arr
(ptr++)+=123
printf("%d,%d",*ptr,*(++ptr))
()10分
三、编程题(第一小题20,第二小题30分)
1、不使用库函数,编写函数
intstrcmp(char*source,char*dest)
相等返回
0,不等返回
-1
2、写一函数
intfun(char*p)判断一字符串是否为回文,是返回
1,不是返回
0,出错返回
-1
阅读了本文,本站还为你提供以下可能你会感兴趣的相关文章:
厦新笔试真题
安信证券笔试题
日立环球存储笔试题目