早一个星期给我的,吓的我不感去拉,C的还算勉强,网络那些看的我头大
1、 选择题(答案为一个或多个)
1、对于栈中的元素进行引用,复合下列哪些规则(A,C)
A:LIFO B:LILO C:FILO D:FIFO
2、单链表的每个结点中包括一个指针link,它指向该结点的后继结点。现要将指针q指向的新结点插入到指针p指向的单链表结点之后,下面的操作序列中哪一个是正确的?(C)
A: p->link = q->link; q = p->link;
B: p->link = q; q->link = p->link;
C: q->link = p->link; p->link = q;
D: q = p->link; p->link = q->link;
3、在一种语言中,运算符是从右向左结合的(例如:a+b+c =a+(b+c))下面表达式“7-(16/(3+1)*2)-4”的结果是(C)
A、-1; B、1; C、3; D、7; E、9;
4、程序的局部变量存在于(B)中,全局变量存在于(A)中,动态申请数据存在于(C)中
A:数据段 B:堆栈 C:堆空间
5、循环链表指(A、C)
A:最后一个节点的指针域总是指向链表头 B:可疑自由膨胀的链表
C:链表含有指向上一级节点的指针域 D:以上都不是
6、下列是一个C语言函数:
int f (int a)
{
int b;
switch (a)
{
case 1 : b = 10;
case 2 : b = 20;
case 3 : b = 30;
default : b = 0;
}
return b;
}
在其它函数中调用f(1),f(2),f(4),的返回值依次是:D,D,D
A:10 B:20 C:30 D:0
7、进程和线程的最主要区别在于:(B、C、D)
A:进程是UNIX下的概念,线程是Windows下的概念;
B:进程的效率比线程低;
C:在进程中可以创造线程,但线程中不能生成进程;
D:进程有自己的运行空间,线程的运行空间是共享的
8、如下代码:
unsigned int ulBuf[10];
int I;
unsigned char ucInfo[10];
for (I = 0;I<10;I++)
{
ulBuf = I+1;
ucInfo = 0;
}
sprintf(ucInfo,”%s”,ulBuf);
请问ucInfo[0]中的值应该是什么(D)
A:0 B:1 C:0或1 D:不确定
9、下面程序的运行结果是多少?(D)
main () {
char chr = 127;
int sum = 200;
chr += 1;
sum +=chr;
printf(“sum = %d/n”,sum);
return(0);
}
A: 327 B:328 C:99 D:72
11、软件需求分析阶段的测试手段一般采用(C)。
A 总结 B 阶段性报告 C 需求分析评审 D 不测试
12、有如下的Hash函数:
unsigned short hashf (unsigned short key) { return (key >> 4) % 256 }
hashf(16)和hashf(256)的值[ ]
A: 1,16 B: 8,32 C: 4,15 D: 1,32
13、enum{A ,B ,C ,D ,E ,K =8 , J , M}; 请说出D=[ ]
A: 3 B: 4 C: 5 D: 6 E :7
14、下面的代码中的含义是什么[ ]
#ifndef _oss_LIB_H_
#define _oss_LIB_H_
#endif
A .包含oss的Lib库 B: 定义一个常量 C.不包含oss的Lib库
D.防止头文件被重复引用
15、下面程序的运行结果是多少?[ ]
#include <string.h>
main( ){ char chr = 127; int sum = 200;
chr += 1; sum += chr; pfintf( “sum=%d/n”,sum); return 0 ; }
A :327 B: 328 C: 199 D: 72
16、以下手段哪些可用于进程间的同步与互斥[ ]
A:信号量与PV原语 B:B树 C:进程上下文 D:临界区加锁
17、对栈S进行下列操作:push(1), push(2), pop( ), pop( )。则此时栈顶元素是[ ]
A:1 B:2 C:0 D: 不确定
18、switch(c)中的c不能是哪种数据类型[ ]
A:char B:long C:unsigned D:double E:float
19、在Windows95环境下,定义数组:int **a[2][3]:则数组a所占用的内存单元为[ ]
A:6字节 B:24字节 C:48字节 D:不能确定
20、类型定义: chair S[3] =”AB” char *p; 在执行了语句p=s之后,*(p+2)的值是[ ]
A:‘B’ B:字符‘B’的地址 C:‘{threadcontent} D:不确定 E:以上答案均不正确
21、下面对宏的定义和使用,哪些是错误的?[ ]
A:#define RECTANGLE_AREA(a, b) (a * b)
B:#define RECTANGLE_AREA(a,b) ( a )* ( b )
C:#define INTI_RECT_VALUE( a, b )
D:#define MBUF_CLEAR_FLAG(pstMBufM, ulflagM)
((pstMEufM)-stUserTagData.stCommonInfo.ulFlag &=( ~(ulFlagM) ))
21、下面二叉树前序遍历的顺序是[ ]
a
╱ ╲
b c
A:a,b,c B:b,a,c C:b,c,a D:c,b,a
22、对下列关键字序列用快速排序进行排序时,速度最快的情形是[ ]
A:{25、23、30、17、21、5、9} B:{21、9、17、30、25、23、5}
C:{21、25、5、17、9、23、30} D:{5、9、17、21、23、25、30}
23、在下列叙述中,错误的一条是[ ]
A:操作系统是用户与计算之间的接口;
B:程序的并发执行,使程序失去了顺序执行时具有的封闭性和可再现性,程序与程序的执行不再一一对应。
C:进程从一个状态到别一个状态的转换,都是靠使用不同的原语来实现。
D:在单CPU的系统中,任何时刻处于就绪状态的进程有多个,而且,只有处于就绪状态的进程经调度程序选中后方可进入运行状态。
24、下面关于内容存管理的说法哪种是正确的[ ]
A:页式内存管理存在严重的碎片问题
B:段式内存管理不存在抖动问题
C:分区式内存管理既存在碎片问题,又存在抖动问题
D:段页式内存管理既减少了碎片问题,又减少了抖动问题
二、简答题
1、const char*, char const*, char*const的区别?
解答:
把一个声明从右向左读。
char * const cp; ( * 读成 pointer to ) cp is a const pointer to char
const char * p; p is a pointer to const char;
char const * p; 同上因为C++里面没有const*的运算符,所以const只能属于前面的类型。
2、下面这个程序执行后会有什么错误或者效果:
#define MAX 255
int main()
{
unsigned char A[MAX],i;
for (i=0;i<=MAX;i++)
A=i;
}
解答:
MAX=255
数组A的下标范围为:0..MAX-1,这是其一..
其二.当i循环到255时,循环内执行:
A[255]=255;
这句本身没有问题..但是返回for (i=0;i<=MAX;i++)语句时,
由于unsigned char的取值范围在(0..255),i++以后i又为0了..无限循环下去.
注:char类型为一个字节,取值范围是[-128,127],unsigned char [0 ,255]
3、ASSERT()是干什么用的
解答:
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。例如,变量n在程序中不应该为0,如果为0可能导致错误,你可以这样写程序:
......
ASSERT( n != 0);
k = 10/ n;
......
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。
4、头文件中的 ifndef/define/endif 干什么用?
解答:防止该头文件被重复引用。
5、#include <filename.h> 和 #include “filename.h” 有什么区别?
解答:
对于#include <filename.h> ,编译器从标准库路径开始搜索 filename.h
对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h
6、const 有什么用途?(请至少说明两种)
解答:
(1)可以定义 const 常量
(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东
西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
7、在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”?
解答:
C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字
与C 语言的不同。假设某个函数的原型为: void foo(int x, int y);
该函数被C 编译器编译后在库中的名字为_foo , 而C++编译器则会产生像
_foo_int_int 之类的名字。
C++提供了C 连接交换指定符号extern“C”来解决名字匹配问题。
8、void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}
请问运行Test 函数会有什么样的结果?
解答:
程序崩溃。
因为GetMemory 并不能传递动态内存,
Test 函数中的 str 一直都是 NULL。
strcpy(str, "hello world");将使程序崩
溃。
9、char *GetMemory(void)
{
char p[] = "hello world";
return p;
}
void Test(void)
{
char *str = NULL;
str = GetMemory();
printf(str);
}
请问运行Test 函数会有什么样的结果?
解答:
可能是乱码。
因为GetMemory 返回的是指向“栈内存”
的指针,该指针的地址不是 NULL,但其原
现的内容已经被清除,新内容不可知。
10、void GetMemory2(char **p, int num)
{
*p = (char *)malloc(num);
}
void Test(void)
{
char *str = NULL;
GetMemory(&str, 100);
strcpy(str, "hello");
printf(str);
}
请问运行Test 函数会有什么样的结果?
解答:
(1)能够输出hello
(2)内存泄漏
11、void Test(void)
{
char *str = (char *) malloc(100);
strcpy(str, “hello”);
free(str);
if(str != NULL)
{
strcpy(str, “world”);
printf(str);
}
}
请问运行Test 函数会有什么样的结果?
解答:
篡改动态内存区的内容,后果难以预
料,非常危险。
因为free(str);之后,str 成为野指针,
if(str != NULL)语句不起作用。
12、1.下面的代码错在哪里?
#include<string.h>
char * Func(void){
char p[10];
strcpy(p,”11”);
return p;
}
解答:局部变量不能作为地址指针返回。
13、5、请描述软件工程中的瀑布模型?
解答:
五、编写strcpy 函数(10 分)
已知strcpy 函数的原型是
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。
(1)不调用C++/C 的字符串库函数,请编写函数 strcpy
char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest!=NULL) && (strSrc !=NULL)); // 2分
char *address = strDest; // 2分
while( (*strDest++ = * strSrc++) != ‘{threadcontent}’ ) // 2分
NULL ;
return address ; // 2分
}
六、编写用C语言实现的求n阶阶乘问题的递归算法:
long int fact(int n)
{
int x;
long int y;
if(n<0)
{
printf("error!");
}
if(n==0)
return 1;
x=n-1;
y=fact(x);
return (n*y);
}
七、编程实现删除有序数组中的重复元素?
八、编程实现双向链表和单向链表插入一个node操作。
小知识:(必须掌握)
c指针
int *p[n];-----指针数组,每个元素均为指向整型数据的指针。
int (*)p[n];------p为指向一维数组的指针,这个一维数组有n个整型数据。
int *p();----------函数带回指针,指针指向返回的值。
int (*)p();------p为指向函数的指针。
下面一套网络的
一.填空题:(共15题,每题1.5分 合计:22.5分)
1、 TCP/IP模型(按从高到低的顺序) 应用层 传输层 网络层 网络接口层
2、 OSI参考模型(按从高到低的顺序) 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
3、地址解析协议 ARP 是用于获得指定物理网络接口卡地址的目标主机的 IP 地址
4、网际控制报文协议 ICMP 是用以向源主机报告数据报文在交付时出现的一些错误
5、传输层的主要协议 TCP、SPX 和 NetBIOS UDP
6、在TCP/IP数据报格式中 字段是设置分片长度的(填写英文名称)
7、在TCP/IP数据报格式中 TOS 字段是表示应该如何处理给数据报,并提供服务类型设置的(填写英文)
8、一个IP地址分为两部分前一部分 网络 地址,后一部分是 主机 地址。
9、Ipv6的地址结构中每个IP地址长度为 1000 0000(128) 位(二进制)
10、两种核心路有协议更新算法: 最短路径优先法 和 矢量距离法 。
11、RIP最大规定最大跳数为 15 ,若跳数为 16 则表示不可达。
12、BOOTP使用 UDP 风装在IP中,因而已被应用程序使用。
13、BOOTP是用两个知名的端口:服务器端口为 67 ,客户机端口为 68 。
14、FTP是基于TCP连接的,所使用的端口是 21 。
15、在简单网络管理协议的应用中,被管设备都应该运行 tcp/ip 协议。在被管设备中需要运行与管理相关的软件,叫做 代理理程序( a g e n t )或代理进程 。
二.选择题:(共25题,每题1.5分 合计:37.5分)
1、下列那些不时网际层协议 c
A、IP
B、ARP
C、MAC
D、ICMP
E、IGMP
2、TCP/IP支持那三种类型的数据发送 c
A、多播、广播、单播
B、多播、单播、IP数据
C、多播、组播、单播
D、IP数据、组播、广播
3、 传输控制协议表述正确的内容是 b
A、面向连接的协议,不提供可靠的数据传输
B、面向连接的协议,提供可靠的数据传输
C、面向无连接的服务,提供可靠数据的传输
D、面向无连接的服务,不提供可靠的数据传输
4、 文件传输协议(FTP)使用什么样的服务 c
A、ICMP服务
B、UDP服务
C、TCP服务
D、SMTP服务
5、 以太网最大可传送的帧(数据)长度为 个8位组。d
A、64
B、32
C、256
D、1500
6、 逻辑地址202.112.108.158,用 Ipv4二进制表示32地址正确的是:a
A、11001010 01110000 01101100 10011110
B、10111101 01101100 01101100 10011001
C、10110011 11001110 10010001 00110110
D、01110111 01111100 01110111 01110110
E、以上都不对
7、 IP地址分配需要注意问题,一下对IP地址分配中描述不正确的是:d
A、网络ID不能全为1
B、网络ID不能全为0
C、网络ID不能以127开头
D、同一网络上的每台主机必须有不同的网络ID
E、同一网络上的每台主机必须分配有唯一的主机ID
8、 下列地址哪一个有效:
A、131.255.255.18
B、220.103.256.56
C、240.9.12.12
D、192.5.91.255
E、129.9.200.21
9、 子网掩码的设置正确的是:c
A、对应于网络地址的所有位都设为0
B、对应于主机地址的所有位都设为1
C、对应于网络地址的所有位都设为1
D、以上都不对
10、子网掩码为255.255.0.0下列哪个IP地址不在同一网段中:c
A、172.25.15.201
B、172.25.16.15
C、172.16.25.16
D、172.25.201.15
11、对于IP地址192.168..168.0、192.168.169.0、192.168.170.0、192.168.171.0将这四个C类地址合并成一个超网应该使用子网掩码: a
A、255.255.0.0
B、255.255.255.0
C、255.240.248.0
D、255.248.240.0
12、在每一个自治系统中,都指定一个或多个路由器负责收集并向与此自治系统相连接的 a 发送本自治系统中各个网络的可达性信息a
A、路由器
B、核心路由器
C、交换机
D、服务器
13、在同一自治系统中实现路由器之间自动传播可达信息、进行路由选择的协议称为。c
A、EGP
B、BGP
C、IGP
D、GGP
14、RIPv1中规定活动节点每隔 秒广播一轮其当前路由表中的路由信息。d
A、60
B、120
C、180
D、30
15、RIPv1中规定被动节点在学到一个路由后要立即开始计时,在 秒之内,如果一直没有再次得到关于此路由的广播,则放弃此路由。b
A、160
B、180
C、30
D、60
16、RIPv1和RIPv2的区别:d
A、支持更多IP地址数
B、通过传递子网掩码扩展了对于子网路由的支持
C、规定的最大跳数不同
D、以上都不对
17、下列对OSPF描述错误的是:e
A、提供路由服务类型:如可要求低延迟或高吞吐量,路由时不仅依据路由目的,还要依据服务类型要求
B、提供负载均衡:如果到某个目的机具有多个具有相同代价的路径,OSPF将均分负载给各个路径
C、提供网络的“域”划分能力,一个域对外部是透明的,因而可独立管理,这就提供了灵活的网络扩展能力,易于规模化
D、规定路由器之间的信息交换需要有授权,提高安全性。RIP中任意路由都可广播路由信息,易被利用。
E、使用跳数来计算到墓地网络的距离。
18、对网际控制协议(ICMP)描述错误的是:b
A、ICMP封装在IP数据报的数据部分
B、ICMP消息的传输是可靠的
C、一般不把ICMP作为高层协议,而只作为IP必需的一个部分。
D、ICMP不是在物理层进行传送的
19、对UDP数据报描述不正确的是:d
A、是无连接的
B、是不可靠的
C、不提供确认
D、提供消息反馈
20、对客户-服务器模式描述不正确的是:a
A、服务器通过网络接收请求,并进而提供服务返回给请求者
B、不同节点完成近乎形同功能的两个程序
C、向服务器发送请求并等待相应的程序都可称为客户
D、客户机程序可以利用服务器节点上现有的资源
21、DNS服务器进行查询时,可以有三种方式:
A、递归查询方式、重复查询方式、逆向查询方式
B、递归查询方式、触发更新查询方式、逆向查询方式
C、重复查询方式、逆向查询方式、触发更新查询方式
D、递归查询方式、重复查询方式、触发更新查询方式
22、TELNET通过TCP/IP协议模块在客户机和远程登录服务器之间建立一个:A
A、UDP
B、ARP
C、TCP
D、RARP
23、TFTP在传输文件时,每个传输文件为固定的 。d
A、256K
B、54K
C、128K
D、512K
24、简单网络管理协议工作在 层,使用 层协议进行通信。b
A、传输层、网络层
B、应用层、传输层
C、会话层、传输层
D、应用层、网络层
25、MIME的目的
A、为允许在EMAIL中传送非ASCII数据。
B、为使用新的EMAIL帐号
C、为获得邮件传输的身份认证
D、为设置收件箱收发邮件
26、TCP/IP协议组中,传输层协议中[ a ]是面向连接的,[d ]是面向非连接的
A: TCP B: IPX C: ARP D: UDP E: NETBIOS
27、以下哪些协议属于路由协议?[ abf ]
A:BGP B:RIP C:ICMP D:H323 E:802.1x F:OSPF
28、TCP/IP中,一个c类网能带多少台主机?[ ]
A:255 B:522 C:1024 D:2048 E:以上都不是
三.判断题:(共10题,每题1分 合计:10)
1、 IP负责数据交互的可靠性(x )
2、 传输层的主要功能是负责主机到主机的端对端的通信()
3、 用户数据报协议提供可靠的数据交互服务,且不进行差错检验(x)
4、 应用层提供TCP/IP应用协议以及应用程序的编程接口(√)
5、 普通文件传输协议(TFTP)使用UDP服务(√)
6、 IP多播地址只能用于源地址,而不能为目的地址。(x)
7、 ICMP不能为多播报告出错消息。()
8、 在传输层目前,较小的端口号多址定给一些众所周知的服务,较大的留给应用程序。()
9、 只要一个内核中实现了TCP/IP协议的操作系统,就可以成为TCP/IP网络操作系统()
10、DHCP协议数据封装在TCP中。()
四.简答题 (共10题,每题3分 合计:30分)
1、 在TCP/IP中,数据报一旦被分片,则在到达目的主机之前就一直以单独的数据报存在,在到达主机后,才组合成原始的数据报。简述这样做的优缺点。
解答:
1) 包文需要分片,2) 又需要组装,3) 增加了开销和复4) 杂度!
5) 包文分片到组合过程中容易丢包、出错
2、 已由网络设备的物理地址(网卡地址、MAC地址)作为最底层通信地址,为何还要IP地址?
3、为何要做子网划分?
解答:为了节约ip地址
4、简述子网划分的一般步骤。
5、初始化路由表可能有几种方式?
6、最短路径优先法和矢量距离法的比较。
7、简述VD算法所致慢收敛问题的解决方案。
8、简述建立TCP连接三次握手的三个步骤。
解答:
1) 请求端(通常称为客户)发送一个S Y N段指明客户打算连接的服务器的端口,以及初
始序号(I S N)。S Y N段为报文段1。
2) 服务器发回包含服务器的初始序号的S Y N报文段(报文段2)作为应答。同时,将确认
序号设置为客户的I S N加1以对客户的S Y N报文段进行确认。一个S Y N将占用一个序号。
3) 客户必须将确认序号设置为服务器的I S N加1以对服务器的S Y N报文段进行确认(报文
段3)。
这三个报文段完成连接的建立。这个过程也称为三次握手( three-way handshake)
另外:
建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由T C P的半关闭(h a l f -
c l o s e)造成的。既然一个T C P连接是全双工(即数据在两个方向上能同时传递),因此每个方
向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个F I N来终止这个方向连接。当一端收到一个F I N,它必须通知应用层另一端几经终止了那个方向的数据传送。发送F I N通常是应用层进行关闭的结果。
9、简述BOOTP请求和响应过程:客户-服务器模式。
10、简述SMTP中客户和服务期间的通信过程。
11、 hub和交换机以及路由器别是什么?功能有哪些区别?分别在哪个层次上面实现的?
12、 CSMA/CD的原理和具体实现过程:
解答:
概括成四句话:先听后发,边发边听,冲突停止,随机延时后重发。
具体过程:
1当一个站点想要发送数据的时候,它检测网络察看是否有其他站点正在传输,即侦听信道是否空闲.
2如果信道忙,则等待,直到信道空闲.
3如果信道闲,站点就传输数据.
4在发送数据的同时,站点继续侦听网络确信没有其他站点在同时传输数据.因为有可能两个或多个站点都同时检测到网络空闲然后几乎在同一时刻开始传输数据.如果两个或多个站点同时发送数据,就会产生冲突.
5当一个传输节点识别出一个冲突,它就发送一个拥塞信号,这个信号使得冲突的时间足够长,让其他的节点都有能发现.
6其它节点收到拥塞信号后,都停止传输,等待一个随机产生的时间间隙(回退时间Backoff Time)后重发.
13、 IP地址如何分类?
A:0 7 24 B:10 14 16 C:110 21 8 D:1110 28 E:11110 27
14、 Ping操作有哪些报文?
解答: Icmp:request answer
15、 IPV6跟IPV4的主要区别,16、 改变的原因?
17、
18、 IPV4地址不19、 够用的解决办法有哪些?分别的原理是什么?
解答:子网技术和VLSM(可变长)技术
VLSM(Variable Length Subnet Mask