2021年中国人民公安大学 826《计算机网络和 C 语言程序设计》硕士研究生考研试题及答案

 您现在的位置: 考博信息网 >> 文章中心 >> 考研复习 >> 专业课 >> 正文 2021年中国人民公安大学 826《计算机网络和 C 语言程序设计》硕士研究生考研试题及答案

考研试卷库
2021年中国人民公安大学 826《计算机网络和 C 语言程序设计》硕士研究生考研试题及答案

2021年中国人民公安大学硕士研究生考研试题及答案

第一部分 计算机网络

一、单项选择题:下列每题给出的四个选项中,只有一个选项是符合题目要求的。每小

题 1 分,共 10 分。

1. 为实现一个局域网内的主机互连互通,最常使用的组网设备是()。

A.集线器 B.交换机 C.路由器 D.中继器

2. 网络体系结构可以定义为()。

A.网络层次结构模型与各层次协议的集合

B.由国际标准化组织制定的一个协议标准

C.执行计算机数据处理的软件模块

D.一种计算机网络的具体实现方法

3.下列对 IPv6地址 FE01:0:0:050D:23:0:0:03D4的简化表示中,错误的是( )。

A.FE01::050D:23:0:0:03D4

B.FE01:0:0:050D:23::03D4

C.FE01:0:0:50D:23::03D4

D.FE01::050D:23::03D4

4. 以下关于防火墙技术的描述,错误的是()。

A.可以对进出内部网络的分组进行过滤

B.可以部署在内网与外网之间

C.可以查杀病毒、木马

D.可以对用户使用的服务进行控制

5.在已获取 IP地址的 DHCP客户上执行“ipconfig/release”后,其 IP地址和子网掩

码分别为()。

A.169.254.161.12和 255.255.0.0

B.0.0.0.0和 0.0.0.0

C.127.0.0.1和 255.255.255.255

D.127.0.0.1和 255.0.0.0

8


 

6.校园网内的一台计算机可以使用 IP地址但无法使用域名地址访问互联网服务,上述

故障原因不可能是()。

A.该计算机的默认 DNS服务器没有提供正常域名解析服务

B.提供被访问服务器名字解析的 DNS服务器有故障

C.该计算机与 DNS服务器不在同一子网

D.该计算机发起的目的端口为 53的访问请求被限制

7.下列对 VLAN描述错误的是()。

A. VLAN以交换式网络为基础

B. VLAN工作在 OSI参考模型的网络层

C. 每个 VLAN都是一个独立的逻辑网段

D. VLAN之间通信必须通过三层交换机或路由器

8.组建家庭局域网时,ISP只提供了一个连接到网络的接口,且只为其分配了一个有效

的 IP地址。那么在组建家庭局域网时可选用的网络设备是()。

A.无线路由器 B.无线接入点 C.无线网桥 D.局域网交换机

9.在 WWW 服务的超链接中,用来确定信息所在位置的技术是()。

A.超媒体技术 B.URL C.HTTP协议 D.HTML语言

10.互联网的 IP协议提供的服务是()。

A.可靠的无连接服务

B.不可靠的无连接服务

C.可靠的面向连接服务

D.不可靠的面向连接服务

二、简答题:共 4小题,每小题 5分,共 20分。

1. 简述五层协议网络体系结构的层次划分及各层主要功能。

2. 简述交换机的工作原理,区别交换机、集线器、路由器、网关。

3. 对比分析 RIP和 OSPF路由协议的特征。

4. 与对称密钥密码体制比较,分析公钥密码体制的特点?

三、综合应用题:共 3 小题,共 45 分。

1.计算并填写下表(10分):

IP地址 191.23.181.13

子网掩码 255.255.192.0

地址类别 [1]

网络地址 [2]

直接广播地址 [3]

主机号 [4]

子网内的最后一个可用 IP地 [5]

址

2.某公司从 ISP申请到的网络前缀是 30.138.128/23,其网络布局如图 1所示,共分三

个局域网,LAN1~LAN3 主机数分别为 250,120,120。

9


 

LAN1 250台主机

R2

m1 m0

 R1

m0

 m1

m3

LAN2 120台主机

m2

互联网的

其他部分

LAN3 120台主机

网络 30.138.128/23

图 1 公司网络拓扑

(1)请按子网顺序号给每一个局域网分配网络地址,说明理由或给出必要的计算过程

(8分)。

(2)请给出 R1的路由表,使其明确包括到 LAN1~LAN3的路由和默认路由(8分)。

(3)请采用路由聚合技术,给出 R2的路由表(4分)。

参考:路由表结构为

目的网络 IP 地址 子网掩码 下一跳 接口

3.下图是用户主机在发送电子邮件时用 Wireshark捕获的数据包。请根据图中信息回答

下列问题。

图 2 Wireshark屏幕截图

(1)该主机的 MAC地址、IPv4地址、邮件服务器的 IPv4地址分别是什么?(3分)

(2)DNS服务器的 IPv6地址、端口地址是什么?分析 Wireshark分组 1和 2的含义?

(4分)

10


 

(3)分析 Wireshark分组 3-5的含义,画图简述 TCP 运输连接建立的过程。(3分)

(4)分析用户的电子邮件是使用浏览器发送还是邮件客户端软件发送?分析图中 DNS、

TCP和 SMTP协议的关联关系?(5分)

第二部分 C语言程序设计

一、单项选择题:下列每题给出的四个选项中,只有一个选项是符合题目要求的(每小

题 2分,共 20 分)。

1.以下选项中,能用作用户标识符的是()。

A.void B.6_6 C._0_ D.unsigned

2.已知 int j,i=1; 则执行 j=-i++; i 和 j 的值为()。

A.1,-1 B.1,1 C.2,-1 D.2,1

3.有以下程序,程序运行后的输出结果是()。

main() {

int a=1,b=0;

printf("%d,",b=a+b);

printf("%d",a=2*b); }

A.0,0 B.1,0 C.3,2 D.1,2

4.设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。

A.if(a>b) c=a,a=b,b=c; B.if(a>b){c=a,a=b,b=c;}

C.if(a>b) c=a;a=b;b=c; D.if(a>b){c=a;a=b;b=c;}

5.有以下定义语句,编译时会出现编译错误的是()。

A. char a='a'; B.char a='\n';

C. char a='aa'; D.char a='*';

6.有以下程序,已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是 ()。

main() {

char c1,c2;

c1='A'+'8'-'4';

c2='A'+'8'-'5';

printf("%c,%d\n",c1,c2); }

A.E,68 B.D,69 C.E,D D.输出无定值

7.有以下程序,若要使程序的输出值为 2,则应该从健盘给 n 输入的值是______。

main() {

int s=0,a=1,n;

scanf("%d",&n);

do {s+=1; a=a-2;}

while(a!=n);

printf("%d\n",s); }

A. -1 B.-3 C. -5 D. 0

8.若有定义: int a[ ][4];则 a[i][j]前有______个元素。

A. j*4+i B.i*4+j C.i*4+j-1 D. i*4+j+1

9.下面有关 for 循环的正确描述是: ()。

A. for 循环只能用于循环次数已经确定的情况

B. for 循环是先执行循环体语句,后判断表达式

C. 在 for 循环中,可以用 break 语句跳出循环体

D. for 循环中,可以包含 if 语句,但必须用花括号括起来

10.以下不正确的描述是: ()。

A. continue 语句的作用是结束本次循环的执行

B. break 语句只能在 switch 语句体内使用

C.在循环体内使用 break 语句或 continue 语句的作用完全不同

11


 

D.从多层循环嵌套中退出时,可以使用 goto 语句

二、程序填空题(每小题 2分,共 10分)。

1.若程序运行后的输出结果是“1,3,7”,请填空。

int main() {

int i,n[5]={0};

for(i=1;i<4;i++){

n[i]= ;

printf("%d\n", );

} }

2.若程序的运行结果是 10,请填空。

int a=3,b=5;

int max(int a,int b) {

int c;

? a:b; return(c);

}

main() {

int a=10;

int max(int a,int b);

printf("%d", );

}

3.函数 fun 的功能是使字符串 str 按逆序存放,请填空。

void fun (char str[]) {

char m; int i, j;

for (i=0, j=strlen(str); i< ; i++, j--)

{

m = str[i];

str[i] = str[j-1];

str[j-1] = m; }

printf("%s\n",str);

}

三、读程序写结果题(每小题 5分,共 15分)

1.程序运行后的输出结果是( )。

main() {

int a=1,b=7;

do{ b=b/2;a+=b;

} while (b>1);

printf("%d\n",a);

}

12


 

2.程序运行时,若输入 1 2 3 4 5 0<回车>,则输出结果是( ) 。

main() {

int s;

main(){

scanf("%d",&s);

char ch[2][5]={“6937”,”8254”},*p[2];

while(s>0) {

int i,j,s=0;

switch(s) {

for(i=0;i<2;i++)

case 1:printf("%d,",s+5);

p[i]=ch[i];

case 2:printf("%d,",s+4); break;

for(i=0;i<2;i++)

case 3:printf("%d,",s+3);

for(j=0;p[i][j]>’\0’;j+=2)

default:printf("%d,",s+1);break; }

 s=10*s+p[i][j]-‘0’;

scanf("%d",&s);

printf(“%d\n”,s);

}

}

}

3.有如下程序

main() {

char ch[2][5]={“6937”,“8254”},*p[2];

int i,j,s=0;

for(i=0;i<2;i++)

p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>‘\0’;j+=2)

 s=10*s+p[i][j]-‘0’;

printf(“%d\n”,s);

}

该程序的输出结果是()。

四、编程题(每题 15分,共 30分)。

1.所谓“水仙花数”是指一个 3 位数,其各位数字立方和等于该数本身。例如,153 是

一个水仙花数,因为 153=13+53+33。编写 C 语言程输出所有的水仙花数并求所有水 仙花

数之和。

2.在主函数中输入 10个字符串,用另一个函数对它们排序。然后在主函数输出这 10

个排好序的字符串。

Ⅴ.参 考 答 案

第一部分 计算机网络

一、单项选择题(每小题 1 分,共 10 分)

1.B 2.A 3.D 4.C 5.B

6.C 7.B 8.A 9.B 10.B

二、简答题(共 4 小题,每小题 5 分,共 20 分)

1.答:五层网络体系结构模型从下至上为物理层、数据链路层、网络层、运输层、

应用层。各层的主要功能:物理层的任务就是透明传送比特流。数据链路层的任务是在

13


 

两个相邻结点间的线路上无差错地传送以帧(frame)为单位的数据,每一帧包括数据

和必要的控制信息。网络层的任务就是要选择合适的路由,使发送站的运输层所传下来

的分组能够正确无误地按照地址找到目的站,并交付给目的站的运输层。运输层的任务

是向上一层的进行通信的两个进程之间提供一个可靠的端到端服务,使它们看不见运输

层以下的数据通信的细节。应用层规定应用进程在相互通信时所遵循的协议。

(每层名称和功能各 1分。)

2.答:交换机工作在数据链路层。其工作原理是(1)通过自学习方式建立转发表,

登记收到的数据帧的源地址和进入端口;(2)根据收到的数据帧的目的 MAC地址查找交

换机转发表,按表中给出的端口进行转发。物理层中继系统:转发器(repeater)。数据

链路层中继系统:网桥或桥接器(bridge)。网络层中继系统:路由器(router)。网桥和路

由器的混合物:桥路器(brouter)。网络层以上的中继系统:网关(gateway)。 转发器只

能放大电信号;网桥可以互联不同协议的局域网;路由器可以互联局域网-广域网、局

域网-局域网、广域网-广域网;网关可以互联运输层不同协议的网络。

(工作原理 2分,比较 3分。)

3.答: RIP是基于距离向量的路由协议(1分);OSPF是基于链路状态的路由协议

(1 分)。RIP 仅和相邻路由器交换信息;OSPF 使用洪泛法广播(1 分)。RIP 交换的信

息是当前本路由器所知道的全部信息,即自己的路由表;OSPF 发送的信息就是与本路

由器相邻的所有路由器的链路状态(1分)。RIP按固定的时间间隔交换路由信息;OSPF

只有当链路状态发生变化时,路由器才使用洪泛法向所有路由器发送此信息。(1分)

4.答:对称密钥密码体制又称单钥密码体制,加密和解密使用相同的密钥(1分),

因此仅适用于在通信信道上可以进行一对一的双向保密通信。保密通信仅限于持有此密

钥的双方(1 分)。公钥密码体制又称双钥密码体制,使用公开密钥加密信息,则必须

用私有密钥解密,实现了保密通信(1 分);当使用私有密钥加密信息时,必须用公开

密钥解密,实现了数字签名(1 分)。在使用公开密钥时,在通信信道上可以是多对一

的单向保密通信(1分)。

三、综合应用题(共 3 小题,共 45 分)

1.10分,每小题 2分

[1] B

[2] 191.23.128.0

[3] 191.23.191.255

[4] 0.0.53.13

[5] 191.23.191.254

2.(1)8分

LAN1:30.138.128/24

LAN2:30.138.129/25

LAN3:30.138.129.128/25

(2)8分

R1 的路由表结构为:

目的网络 IP 地址 子网掩码 下一跳 接口

30.138.128.0 255.255.255.0 Direct m0

30.138.129.0 255.255.255.128 Direct m1

30.138.129.128 255.255.255.128 Direct m2

14


 

0.0.0.0 0.0.0.0 R2 m3

(3)4分

R2 的路由表结构为:

目的网络 IP 地址 子网掩码 下一跳 接口

30.138.128.0 255.255.254.0 R1 m0

0.0.0.0 0.0.0.0 Direct m1

3.(1)3分

主机的 MAC地址:f8:28:19:dd:e3:21

主机的 IPv4地址:192.168.1.31

邮件服务器的 IPv4地址:202.108.6.242

(2)4分

DNS服务器的 IPv6地址:fe80::1

DNS服务端口:53

分组 1是主机向 DNS服务器发起域名解析请求(请求域名 smtp.sina.com对应的 IP地

址);分组 2是 DNS服务器向主机发出的域名解析应答。

(3)3分

分组 3-5分别是 TCP连接的三握手报文,

A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN=1,并选择序号 seq=x,

表明传送数据时的第一个数据字节的序号是 x。

B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应使 SYN=

1,使 ACK = 1,其确认号 ack = x+1,自己选择的序号 seq = y。

A 收到此报文段后向 B 给出确认,其 ACK =1,确认号 ack = y+1。A 的 TCP 通知上

层应用进程,连接已经建立。B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP

连接已经建立。

(4)5分

用户使用邮件客户端软件发送电子邮件。

邮件客户端软件使用 SMTP协议发送电子邮件。

因为互 联网 通信 需按照 IP 地址寻 址, 所以 当邮 件客户 端软 件使 用域 名地址

mail.sina.com访问邮件服务器时,主机需先向 DNS服务器发出域名解析请求(分组 1),收

到应答信息(分组 2),即得到邮件服务器域名对应的 IP地址 202.108.6.242。

SMTP协议使用运输层面向连接的服务。需要先建立 TCP连接(分组 3-5)。

15


 

第二部分 C语言程序设计

一、单项选择题:(20分)

1.C;2.C;3.D ;4.C;5.C

6.A;7.B;8.B ;9.C;10.B

二、程序填空题:(10分)

1. n[i-1]*2+1 , n[i]

2. c=a>b , max(a,b)

3. j/2

三、读程序写结果题:(15分)

1. 5

2. 6,5,6,6,4,5,6,

3. 6385

四、编程题:(30分)

1.参考答案

main() {

int i,j,k,n ,sum=0 ;

for(n=100;n<1000;n++){

i=n/100;

j=n/10-i*10;

k=n%10;

if(n= =i*i*i+j*j*j+k*k*k )

{ printf("flower is= %d \n",n) ;

sum=sum+n;} }

printf("the number is =%d",sum); }

16


 

2.参考答案

#include<stdio.h>

#include<string.h>

int main(){

void sort(char *[]);

int i;

char *p[10],str[10][10];

 for(i=0;i<10;i++)

 p[i]=str[i];

print(“input 10 strings:\n”);

 for(i=0;i<10;i++)

 scanf(“%s”,p[i]);

 sort(p);

printf(“the sorted strings:\n”);

for(i=0;i<10;i++)

printf(“%s\n”,p[i]);

void sort(char *s[])

{

int i,j;

char *tp;

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(strcmp(*(s+j), *(s+j+1))>0)

 {tp=*(s+j); *(s+j)= *(s+j+1); *(s+j+1)=tp;}

}

 

考博咨询QQ 135255883 考研咨询QQ 33455802 邮箱:customer_service@kaoboinfo.com
考博信息网 版权所有 © kaoboinfo.com All Rights Reserved
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载或引用的作品侵犯了您的权利,请通知我们,我们会及时删除!