历年计算机软件能力测试程序员的一些真题

测试1

A.为了提高计算机的处理器和外部设备的利用率,将多个程序同时放入主存储设备中,在宏观上并行运行。

B.将一个程序分成几个可以同时执行的程序模块的设计方法。

C.多个用户交互地输入、调试和控制他们的程序在中型设备上的运行。

D.由多台计算机组成的系统。这些计算机可以通过通信交换信息;两相之间没有所有者;他们享有系统资源;该程序由系统中的所有或部分计算机来协调。

执行。管理上述计算机系统的操作系统。

E.一种操作系统的系统响应时间比系统资源利用率更重要,广泛应用于卫星控制、导弹研制、飞机飞行控制、飞机订票业务等领域。

备选答案

A ~ E: (1)分时操作系统(2)实时操作系统(3)批处理操作系统。

(4)网络操作系统(5)独立操作系统(6)单用户操作系统

(7)多线程编程(8)多线程编程(9)并发编程

测试2

(1)顺序存储只能用于存储线性结构。

(2)顺序存储方式的优点是存储密度高,插入和删除效率高。

(3)链表的每个节点恰好包含一个指针。

(4)哈希存储的基本思想是通过关键代码的值来确定数据的存储地址。

(5)哈希表的节点只包含数据元素本身的信息,不包含任何指针。

(6)加载因子(填充因子)是哈希方法的重要参数,反映了哈希表的填充程度。

(7)栈和队列的存储方式可以是顺序的,也可以是链接的。

(8)通过使用二叉链表方法(llink - rlink方法)存储具有n个节点,2n个节点的二叉树。

指针区有n+1个空指针。

(9)用邻接矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用存储空间的大小只与图中的节点数有关,而与图的边数无关。

(10)邻接表法只能用于存储有向图,邻接矩阵法用于存储有向图和无向图。

两者都适用。

测试3

使用_ A_读取和修改文本文件;__B__可以帮助别人在程序中找到错误的位置。

检查电脑各部分,报告故障信息的是__C__。在支持开放策略的操作系统中,提供了各种可选配置对应的目标程序模块,用户可以根据需要选择必要的程序和程序。

设置参数,或者加入我们自己开发的新增设备的驱动的目标模块,通过system __D_ _组成所需的操作系统。电脑开机后,一般会执行一段__E__通常存储在ROM中。

然后将基本操作系统读入内存并执行。

备选答案

答:(1)源程序(2)我的程序(3)显示程序屏幕(4)打印程序

B: (1)可执行程序(2)链接我的程序(3)编译程序(4)调试程序

C: (1)调试程序(2)文件系统检查程序(3)诊断程序(4)格式化程序

D: (1)引导程序(2)生成器程序(3)加载程序(4)加载程序

E: (1)设备程序(2)进程管理程序(3)调度程序(4)引导程序。

问题4

一个按顺序存储的表,有90,000个元素,按关键项的升序排列。

现在假设检查每个元素的概率是相同的,每个元素的关键项的值是不同的。

平均比较次数约为_ a _,比较次数为_ b _。

现在9万个元素按照排列顺序分成几组,这样每组有g个元素(最后一组可能小于g)。搜索时,先从第一组开始,通过比较每组中最后一个元素的关键项的值,找到待搜索元素所在的组,再通过顺序搜索找到待搜索元素。在这种搜索方法中,使总平均比较次数最小的_ c _是_ d _。

当g值大于或等于90000时,该方法的搜索速度接近_ e _。

备选答案

甲、乙:① 25.000 ② 30,000

③ 45,000 ④ 90,000

c、D: ① 100 ② 200

③ 300 ④ 400

E: ①快速分类②斐波那契搜索法

③二分法④顺序搜索法

测试5

为了提高数据的可靠性,决定在7位数据的前面(左边)加一个偶数校验位,使8位中1的个数为偶数。奇偶位为偶数的十六进制的4F和3C分别是_ a _和_ b _的。

现在假设每个数据最多只有一个错误,出错的D5、F4、3A的数据是_ c _。

假设以三个8位数据为单位添加垂直偶数奇偶校验位,即,添加一个8位数据,使得四个8位数据的对应位数是偶数。对于十六进制CF,D5和78,,增加了。

增加的8位数据是_ d _。对于十六进制的25、4F和_ e _,还要加上一个8。

比特数据是3C。

备选答案

a、B、D、E:①F2②56③3C④75⑤CF

⑥62⑦3A ⑧BF⑨4F⑩DC

c:1d 52 f 43 a 4d 5和F4 ⑤D5和3A

⑥F4和3A

测试6

考虑一棵二叉树,有如下性质:○n1 ○每个节点的值大于其左子树上所有节点的值,/○小于或等于其右子树上所有节点的值。○n2 ○n3

现在填写9个数字1,2,3,4...右图中的8,9/\ \

在图中所示的二叉树的九个节点中,并使其具有上述性质○n4 ○n5 ○n6。此时n1的值为_ a _,n2的值为_ b _,而/\ \ n9的值为_ c _。现在,如果你想把√ ~ 10放入这棵树,并保持这棵树的前述性质,可以在_ g _ or _ e _中添加一个节点。

备选答案

A~C:①1 ②2 ③3 ④4 ⑤5 ⑥6 ⑦7 ⑧8 ⑨9

d、E: ① N1以下②N8以下③N9以下④N6以下。

⑤n 1和N2之间⑤N2和N4之间⑦N5和N9之间⑧N3和N6之间。

测试7

假设16位计算机的一个存储单元中存放着111101001000这个数,在下列表达式中找出这个数所代表的意义(如果是十进制,4。

①如原码表示十进制有符号整数(其中该位是符号位),其值为__a__。

(2)如果用大写字母A到V来记录32位数字,则对应的32位正整数是_ b _。

(3)如果采用定点计数法(原码,其位为符号位,小数点在最左边),其标志对应的小数部分为_ c _。

④如果采用以下浮点表示法。

1514 12 11 10 0

┏━━━┳━━━━━━┳━━━┳━━━━━━━━━━━━━━━┓

┃订单符号┃订单代码┃尾号┃尾号┃

┗━━━┻━━━━━━┻━━━┻━━━━━━━━━━━━━━━┛

订单代码用移位码表示,基数为2;尾数用代码表示时,这个数对应的小数是__D__。

⑤如果把这个数字的低位字节看作ASCII码,则表示的字符是__E__。

备选答案

答:(1)-55510(2)-23368(3)-18762(4)56136

b:(1)1kp 8(2)1mq 8(3)DB48(4)1IAA

c:(1)-0.286865(2)-0.713135(3)-0.572571(4)0.233685

d:(1)-13.125(2)-0.073735(3)-13.421875(4)-18.875

E: (1)J (2)A (3)H (4)h

测试问题8

从备选答案中选择应填入下列关于计数器的陈述中的正确答案,并将数字写在答题卡的相应栏中。

下图显示了一个由三个D型触发器组成的非标准计数器。D型触发器具有如下性质:每一个时钟脉冲ck到来时,D触发器输入端的状态被送到触发器。Q端反映触发装置的状态,而Q端反映其状态。)

S3 S2 S1

│ ┌──┐┌──┤ ┌──┐ ┌──┤

┏┷━━━━━┷┓ ││ ┏┷━━━━┷━┓│ │ ┏┷━━━━━━┓

┃qq'┃││┃q·┃││┃q·┃

┃D ┃ ││ ┃D ┃│ │ ┃D ┃

┗┯━━━━━┯┛ ││ ┗┯━━━━┯━┛│ │ ┗┯━━━━━┯┛

ck──┼─────┴──┼┼──┼────┴──┼──┼──┼─────┘

┏ ┷ ┓ ┙ ┏ ┙ ┓ ┏ ┓ ┏ ┓ ┓ ┓ 𗋉 ┿ ┓ ┓ ┓ ┓ ┓ ┓ ┓

┗ ┯ ┛和门┖ ┗ ┯ ┛和门┗ ┗ ┯或门。

│ └───────┼┘ │ │ └──┼─┘ │

└─────────┼──┼─┴─────────┘ │

└──┴───────────────┘

如果初始状态是S3S2S1,则在时钟脉冲ck到达后获得的下五个状态是:

__a__ __b__ __c__ __d__ __e__

备选答案

a─E:①000②001③010④011

⑤100 ⑥101 ⑦110 ⑧111

问题9

一般来说,一条指令由__a__和一个操作数地址码组成。不能为使用堆栈进行操作的指令设置__b__。

浮点运算指令对于在__c__中使用的计算机是非常必要的,而十进制运算指令更适合在I/O数据量大的__d__中使用的计算机。

移位指令属于__e__类。

备选答案

a和b: ①指令码②地址码③操作码④校验码

c、D: ①事务处理②科学计算③工业控制④辅助教学

E: ①输入/输出②传动③操作④控制

测试10

从可供选择的答案中选择一个正确的答案,填入下列关于磁盘的陈述中,并将编号写在答题卡的相应栏中。

磁盘被格式化为24个扇区和20个磁道。圆盘可以根据需要顺时针旋转。各种操作的执行时间如下:

转一圈的时间= =360ms。

读取一段数据的时间= 1毫秒

这张磁盘上有三个文件:

文件A-占用磁道6和扇区1中的2个块。

文件B-占用磁道2和扇区5中的5个块。

文件C-占用磁道5和扇区3中的3个块。

那么这个磁盘的平均等待时间最接近_ a _ ms,平均查找时间最接近_ b _ m _ s,如果磁头移动和磁盘旋转不同时进行,磁头初始位置在磁道0和扇区0,那么通过顺序CBA读取上述三个文件,总时间接近_ c _ ms。在相同的初始位置下,读取上述三个文件的最短时间接近_ d _ ms,此时文件读取顺序为_ e _。

A-D:① 2.3 ② 5 ③ 7.5 ④ 15 ⑤ 50

⑥ 75 ⑦ 90 ⑧ 105 ⑨ 119 ⑩ 169

E:① ABC ② ACB ③ BAC ④ BCA ⑤CAB

测试11

从备选答案中选择应该填入下列英语句子中的正确答案,并将数字写在答题卡的相应栏中。

软件产品可以分为四种基本类型:应用程序、编程语言处理器、操作系统和系统实用技术。

应用程序是执行有用任务的程序,比如解决统计问题,或者保存公司的账簿。

编程语言处理器是在计算机系统中使用计算机语言的程序。它们是应用程序开发人员的工具。

操作系统是占用系统资源并使你能够运行应用程序的程序。

系统实用程序是增加计算机功能的特殊程序。

备选答案

答-答:①管理②执行③支持④减少

⑤分化⑥强化⑦实施⑧引进

⑨排名⑩运行

测试12

从备选答案中选择应该填入下列英语句子中的正确答案,并将数字写在答题卡的相应栏中。

以下是选择程序的有用步骤:

1.研究你可能选择的所有程序的特点。决定哪些功能是你需要的,哪些是你想要的,哪些是你工作中不需要的。

2.剔除那些明显不需要的程序。

3.考虑其余程序如何执行您最常用的功能。这比你需要的所有“好”特性更能影响程序的可用性。

4.无忧无虑地研究剩下的项目——如果你有经验的话——然后决定哪一个最适合你。

备选答案

答:①对②对③在④从

b、C:①满足②要求③帮助④给予

⑤选择⑥喜欢

d、E:①经常②很少③总是④丰富

⑤动手⑥少

测试15

从备选答案中选择应填入下列语句的正确答案,并将数字写在答案的相应栏中。

编译系统一般可以分为五个部分:A、B、C、D和目标代码生成,其中三个部分——A、B和目标代码生成是每一个编译器都必须具备的。许多编译器将── A编译成子程序,在分析── B时根据需要调用── A,并在分析时结合── B和── C生成相关内容。此外,这五个部分都将涉及工作过程中的表单处理和。

备选答案

A-E: ①词汇分析②变量分析③数据分析④语法分析。

⑤流程分析⑤错误处理⑤优化处理⑧表达式处理。

⑨中间代码生成

测试16

从可供选择的答案中,选择应该填入下列关于方程式的陈述中的正确答案,并将数字写在答案的相应栏中。

1.方程AX+BY = 1有一个充分必要条件,即A。

bx+ay=2

2如果直线AX+BY+C = 0 (A,B,C不为0)不经过第一象限,那么A,B,C应满足条件──B─。

下午试题

[程序描述]

已知一个数的前两项是2和3,它的后继者是根据当前最后两项的乘积按以下规则生成的。

(1)如果乘积是个位数,则乘积是数列的后继;

(2)如果乘积是两位数,则乘积的十位数和个位数依次作为数列的两个后继。

这个程序输出这个数列的前n项和它们的总和。其中函数sum(n,pa)返回

序列的前n项之和,并将生成的前n项存储在具有第一指针pa的数组中。这是程序中规定的

输入的n值必须大于2,并且不超过给定的常量值MAXNUM。

例如,如果n的输入值为10,程序将输出以下内容:

总和(10)=44

2 3 6 1 8 8 6 4 2 4

[程序]

#包括

#定义MAXNUM 100

int sum(n,pa)

int n,* pa

{ int count,total,temp

* pa = 2;

____________________ =3;

总计= 5;计数= 2;

while(count++ & lt;n)p = " " & gt;& lt/n)>

{ temp = *(pa-1)* * pa;

if(temp & lt;10)

{ total+= temp;

*(++ pa)= temp;

}

其他

{

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = temp/10;

总计+= * pa;

if(count & lt;n)p = " " & gt;& lt/n)>

{ count++;pa++;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = temp % 10;

总计+= * pa;

}

}

}

___________________________;

}

主()

{ int n,*p,*q,num[MAXNUM];

do {printf("Input N=?(2 & ltn & lt%d):",maxnum+1);p = " " & gt& lt/n & lt;%d):",maxnum+1);& gt

scanf("%d ",& ampn);

} while(_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _);

printf("\nsum(%d)=%d\n ",n,sum(n,num));

for (p=num,q = _ _ _ _ _ _ _ _ _ _ _ _ _p & ltq;p++) p="" printf("%4d ",* p);

printf(" \ n ");

}

[程序描述]

这个程序加密一个密码文本(原文)形成一个密文。加密算法如下:

假设原文是C1C2C3...Cn,加密后形成的密文为S1S2S3...Sn,先看看。

正整数键(Key & gt1)作为加密密钥,密码字符的位置按顺时针方向连成一个环,

如下图所示:

┏━Sn━━S1━┓

Sn-1 S2

┃ ┃

┃ S3

┃ ┃

┗....━━S4━┛

加密时,从S1的位置开始顺时针计数。当计数到关键字符位置时,将原文中的字符放入。

在密码字符位置,同时从环中移除该字符的位置;然后从环中的下一个字符位置开始

继续计数,当再次计数到关键字符位置时,将原文中的字符C2放入其中,并从环

移除字符位置;以此类推,直到N个原字符全部放入密文环,得到S1S2。

...Sn是原文的密文。

例如,当Key=3时,原文的密文:这是一个解码系统是:

YS博物馆

当Key=4时,原始文本的密文为:

SSDTYD HTEGIASISCNM E离子

这个程序将原始代码存储在字符数组old中,将加密密钥存储在整数密钥中。功能解码

用于加密原始旧的并返回密码字符数组的第一个指针。该函数采用双向循环链表。

函数strlen用于计算字符串中的字符数(不包括字符串结)

后缀“\0”)。为简单起见,程序假设内存容量足以满足动态存储单元分配的要求。

[程序]

#包括

#包括

#定义CR 13

typedef结构节点

{ char ch

结构节点* forward/*链接到下一个节点。*/

向后构造节点*;/*链接到上一个节点。*/

}代码;

主()

{ char _ _ _ _ _ _ _ _ _ _,old[256];

int strlen(),key,num = 0;

printf(" \ n请输入电报:\n")l

while(num & lt;255 & amp& amp(old[num++]=getch())!= CR);

旧[_ _ _ _ _ _]= ' \ 0 ';

do { printf(" \ n请输入Key=?(关键点& gt1):");

scanf("%d ",& amp关键);

} while(key & lt;=1);

printf(" \ n电报的解码:' %s '是:\n'%s'\n ",

old,decode(old,key));

}

char *decode(旧,键)

char * oldint键;

{ char * newint length,count,I;

代码*循环,* p;

length=strlen(旧);

loop =(_ _ _ _ _ _ _)malloc(length * sizeof(CODE));

for(I = 1;我& lt长度-1;i++)p = " " & gt;& lt/length-1;i++)& gt;

{ loop[i]。forward = & amploop[I+1];

循环[i]。向后= & amploop[I-1];

}

循环[0]。向后= & amploop[长度-1];

循环[0]。forward = & amploop[1];

循环[长度-1]。正向=循环;

循环[长度-1]。向后= & amploop[长度-2];

for(p =循环,I = 0;我& lt长度;i++)p = " " & gt;& lt/长度;i++)& gt;

{ for(count = 1;计数& lt关键;count++)p = " " & gt;& lt/key;count++)>

p = _ _ _ _ _

p->;ch = * old++;

p->;向后-& gt;转发= _ _ _ _ _ _ _ _ _ _ _ _;

p->;向前-& gt;向后= _ _ _ _ _ _ _ _ _ _ _ _;

p = p-& gt;向前;

}

new=(char *)malloc((长度+1)* sizeof(char));

for(I = 0;我& lt长度;i++) new[i]="loop[i]。ch;

new[长度]= ' \ 0 ';

返回(新);

}

内部字符串

char * s;

{ int len = 0;

而(________!= ' \ 0 ')len++;

返回(len);

}

[程序描述]

这个程序将给定汉字的点阵逆时针旋转90度,输出旋转前后的点阵数据和字形。

附图是汉字篆的16*16点阵字体,数字' 0 '表示空白位置,数字' 1 '表示非空白。

白色位置,单词“turn”的第一行可以表示为以下{0,1}序列:

0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0

如果我们把它看成一个字的16位,那么“转”这个字的第一行就可以用十六进制数的1040来表示。

李,“转”字第二行可表示为1040,第三行可表示为1048,...诸如此类。诸如此类。

16双字节整数可以存储一个中文点阵字体。“转”的点阵数据和字体如附图所示。

如左半部分所示。将一个汉字逆时针旋转90度,即以汉字点阵最右边一列为旋转。

网格的第一行和第二右列被用作旋转网格的第二行,以形成旋转网格字体。

图的右半部分是“转”字旋转90度后的点阵数据和字体。

在程序中,数组old存储“转”字的点阵数据。左转功能逆时针旋转点阵数据。

90度后,旋转后的点阵数据存储在数组new中。功能显示将旋转前后的点阵数据相加。

我使用字符“.”用值0表示位,用字符“x”表示值为1的位,从而前后旋转点。

数组逐行输出其16二进制数据和字形,如附图所示。

[带附图]

1040 ...X.....X......0000 ................

1040 ...X.....X......0200 ......X.........

1048 ...X.....X..X...1640 ...十.二十..X......

FDFC XXXXXX。XXXXXXX..32E0..xx..十. XXX.....

2040 ..X......X......1259 ...X..X..十.二十..X

2844 ..十.十....X...X..1246 ...X..X..X...XX。

4BFE。X..X.XXXXXXXXX. FE44 XXXXXXX..X...X..

7C80。五x综合征..X.......13C8...X..XXXX..X...

0888 ....X...X...X...1240 ...X..X..X......

09FC....X..XXXXXXX..0200 ......X.........

1C08...XXX......X...1120 ...X...X..X.....

E810 XX。X.......X....17FF...十、XXXXXXXXXXX

4890 .X..X...X..X....F120 XXXX...X..X.....

0860 ....X....xx.....1D10...XXX。X...X....

0820 ....X.....X.....1318 ...X..xx...xx...

0810 ....X......X....1010 ...X.......X....

[程序]

#定义

#define EMPTY ' . '

#定义非空的“X”

#定义左0

#定义右1

主()

{静态无符号旧版本[16]=

{0x1040,0x1040,0x1048,0xFDFC,0x2040,0x2844,

0x4BFE,0x7C80,0x0888,0x09FC,0x1C08,0xE810,

0x4890,0x0860,0x0820,0x0810

};

未签名的新[16];

trunleft(旧,新);

显示器(旧的、新的);

}

左转(旧的,新的)

无符号旧[],新[];

{ int row,k;

for(row = 0;row & lt16;row++)

for (k=0,_ _ _ _ _ _;k & lt16;k++)

new[row]| =((old[k]& gt;& gt_ _ _ _ _ _ _)& amp;1)& lt;& lt_______ ;

}

显示(旧的,新的)

未签名*旧,*新;

{

char out[2][17],字母[2];

int row,col

字母[0]=空;

字母[1]=非空;

out[LEFT][16]= out[RIGHT][16]= _ _ _ _ _ _;

for(row = 0;row & lt16;row++、旧++、新++)

{ for(col = 0;col & lt16;++列)

{ out[LEFT][col]=字母[(_ _ _ _ _ _ _)& amp;1];

out[RIGHT][col]= letter[(_ _ _ _ _ _ _)& amp;1];

}

printf("\n %4x %s ",*old,& ampout[LEFT][0]);

printf(" %4x %s ",*new,& ampout[RIGHT][0]);

}

}

new[16]= _ _ _ _ _ _;

for(row = 0;row & lt16;row++、旧++、新++)

{

for(col = 0;col & lt16;++列)

{ out[LEFT][col]=字母[(_ _ _ _ _ _ _)& amp;1];

out[RIGHT][col]= letter[(_ _ _ _ _ _ _)& amp;1];

}

printf("\n %4x %s ",*old,& ampout[LEFT][0]);

printf(" %4x %s ",*new,& ampout[RIGHT][0]);

}

}