2021广西软件水平考试考试真题卷(8).docx
2021广西软件水平考试考试真题卷(8)本卷共分为2大题50小题,作答时间为180分钟,总分100分,60分及格。一、单项选择题(共25题,每题2分。每题的备选项中,只有一个最符合题意) 1.在_中,用于防止信息抵赖;用于防止信息被窃取;用于防止信息被篡改;用于防止信息被假冒。A加密技术 数字签名 完整性技术 认证技术B完整性技术 认证技术 加密技术 数字签名C数字签名 完整性技术 认证技术 加密技术D数字签名 加密技术 完整性技术 认证技术 2.关于网络设备叙述正确的是_。A用中继器可以将采用不同网络协议的局域网互联B用网桥可以将采用不同网络协议的局域网互联C用网关可以将采用不同网络协议的局域网互联D用路由器可以将采用不同网络协议的局域网互联 3.如图3-6所示,某公司局域网防火墙由包过滤路由器R和应用网关F组成,下面描述错误的是()。A可以限制计算机C只能访问Internet上在TCP端口80上开放的服务B可以限制计算机A仅能访问以202为前缀的IP地址C可以使计算机B无法使用FTP协议从Internet上下载数据D计算机A能够与计算机X建立直接的TCP连接4.内部网关协议是指在一个_内部路由器使用的路由协议。A内联网B独立系统C光纤网D自治系统 5.在进行金融业务系统的网络设计时,应该优先考虑_原则。A先进性B开放性C经济性D高可用性 6.若某计算机系统是由1000个元器件构成的串联系统,且每个元器件的失效率均为10-7/h,在不考虑其他因素对可靠性的影响时,该计算机系统的平均故障间隔时间为_小时。A1×104B5×104C1×105D5×105 7.在计算机信息安全保护等级划分准则中,确定了五个安全保护等级,其中最高一级是_。A用户自主保护级B结构化保护级C访问验证保护级D系统审计保护级 8.安全管理是信息系统安全能动性的组成部分,它贯穿于信息系统规划、设计、运行和维护的各阶段。安全管理中的介质安全属于_。A技术安全B管理安全C物理安全D环境安全 9._不属于网络接入技术。AHFCBxDSLCNetBEUIDDDN 10.根据统计显示,80%的网络攻击源于内部网络,因此,必须加强对内部网络的安全控制和防护。下面的措施中,无助于提高同一局域网内安全性的措施是_。A使用防病毒软件B使用日志审计系统C使用入侵检测系统D使用防火墙防止内部攻击 11.以下联网设备中,工作于网络层的设备是_。A调制解调器B以太网交换机C集线器D路由器 12.根据电子计算机机房设计规范(GB501741993),计算机网络机房应选择采用四种接地方式。_接地系统是将电源的输出零电位端与地网连接在一起,使其成为稳定的零电位。要求该接地的地线与大地直接相通,其接地电阻要求小于1。A交流工作B线槽C直流工作D防雷 13.关于RSA算法的叙述,不正确的是_。ARSA算法是一种对称加密算法BRSA算法的运算速度比DES慢CRSA算法可用于某种数字签名方案DRSA的安全性主要基于素因子分解的难度 14.CA安全认证中心可以_。A用于在电子商务交易中实现身份认证B完成数据加密,保护内部关键信息C支持在线销售和在线谈判,实现订单认证D提供用户接入线路,保证线路的安全性 15.如图3-7所示是发送者利用非对称加密算法向接收者传送消息的过程,图中K1是()。A接收者的公钥B接收者的私钥C发送者的公钥D发送者的私钥16.局域网交换机有很多特点。下面关于局域网交换机的论述,不正确的是_。A低传输延迟B高传输带宽C可以根据用户的级别设置访问权限D允许不同速率的网卡共存于一个网络 17.网络安全设计是保证网络安全运行的基础,以下关于网络安全设计原则的描述,错误的是_。A网络安全系统应该以不影响系统正常运行为前提B把网络进行分层,不同的层次采用不同的安全策略C网络安全系统设计应独立进行,不需要考虑网络结构D网络安全的“木桶原则”强调对信息均衡、全面地进行保护 18._不属于网络接入技术范畴。AADSLB802.11CUDDIDCableMODEM 19.3DES在DES的基础上,使用两个56位的密钥K1和K2,发送方用K1加密,K2解密,再用K1加密。接受方用K1解密,K2加密,再用K1解密,这相当于使用_倍于DES的密钥长度的加密效果。A1B2C3D6 20.建设城域网的目的是要满足几十千米范围内的大量企业、机关、公司的_。A多个计算机互联的需求B多个局域网互联的需求C多个广域网互联的需求D多个SDH网互联的需求 21.“消息”是我们所关心的实际数据,经常也称为“明文”,用M表示。经过加密的消息是“密文”,用C表示。如果用C=E(M)表示加密,M=D(C)表示解密。那么从数学角度讲,加密只是一种从M_的函数变换,解密正好是对加密的反函数变换。A公钥到私钥B变量域到C函数域C定义域到C函数域D定义域到C值域 22.为了对计算机信息系统的安全威胁有更全面、更深刻的认识,信息应用系统安全威胁的分类方法一般用_三种“综合分类”方法。A高、中、低B对象的价值、实施的手段、影响(结果)C按风险性质、按风险结果、按风险源D自然事件、人为事件、系统薄弱环节 23.信息安全管理体系是指_。A网络维护人员的组织体系B信息系统的安全设施体系C防火墙等设备、设施构建的安全体系D组织建立信息安全方针和目标,并实现这些目标的体系 24._指对主体访问和使用客体的情况进行记录和审查,以保证安全规则被正确执行,并帮助分析安全事故产生的原因。A安全授权B安全管理C安全服务D安全审计 25.11标准定义了三种物理层通信技术,这三种技术不包括_。A直接序列扩频B跳频扩频C窄带微波D漫反射红外线 二、多项选择题(共25题,每题2分。每题的备选项中,有多个符合题意) 1. 递归函数sum(int a, int n)的返回值是数组a的前n个元素之和。 int sum (int a,int n) if(n0) return (1) ; else (2) ; 有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。 int compare (int a, int b, int c ) int temp, max; (3) a:b; (4) temp:c; 递归函数dec(int a,int n)判断数组a的前n个元素是否是不递增的。不递增返回 1,否则返回0。 int dec( int a, int n ) if(n=1) return 1; if(a0a1) return 0; return (5) ; 2. 链表和栈对象的共同特征是:在数据上执行的操作与在每个对象中实体存储的基本类型无关。例如,一个栈存储实体后,只要保证最后存储的项最先用,最先存储的项最后用,则栈的操作可以从链表的操作中派生得到。程序6-1实现了链表的操作,程序6-2实现了栈操作。 import java.io.*; class Node /定义结点 private String m_content; private Node m_next; Node(String str) m_content=str; m_next=null; Node(String str,Node next) m_content=str; m_next=next; String getData() /获取结点数据域 return m_content; void setNext(Node next /设置下一个结点值 m_next=next; Node getNext() /返回下一个结点 return m_next; ) class List Node Head; List() Head=null; void insert(String str) /将数据str的结点插入在整个链表前面 if(Head=null) Head=new Node(str); else (1) void append(String str) /将数据str的结点插入在整个链表尾部 Node tempnode=Head; it(tempnode=null) Heed=new Node(str); else white(tempnode.getNext()!=null) (2) (3) String get() /移出链表第一个结点,并返回该结点的数据域 Srting temp=new String(); if(Head=null) System.out.println("Errow! from empty list!") System.exit(0); else temp=Head.getData(); (4) return temp; class Stack extends List void push(String str) /进栈 (5) String pop() /出栈 return get(); 3. 设计希赛IT教育研发中心的工资管理系统,该中心主要有3类人员:经理、销售员和销售经理。要求存储这些人员的编号、姓名和月工资,计算月工资并显示全部信息。月工资计算办法是:经理拿固定月薪8000元;销售员拿固定工资1000元,然后再按当月销售额的4%提成;销售经理既拿固定月工资也领取销售提成,固定月工资为5000元,销售提成为所管辖部门当月销售总额的5。 按要求设计一个基类employee,销售员类salesman,经理类manager,销售经理类 salesmanager。 程序5-1是类employee的模块内容,程序5-2是类salesman的类模块内容,程序5-3是类manager的模块内容,程序5-4是类salesmanager的模块内容。在主测试程序中,输入张三所管部门月销售量10000后的输出结果如下: 张三所管部门月销售量:10000 销售经理:张三 编号:1001 本月工资:5050 #include iostream.h #include string.h class employee protected: int no; char *name; float salary; public: employee(int num,char *ch) no=num; name=ch; salary=0; virtual void pay()=0; virtual void display() cout"编号:"noendl; cout"本月工资:"salaryendl; ; class salesman: (1) protected: float commrate, sales; public: salesman(int num,char *ch):employee(num,ch) commrate=0.04; void pay() coutname"本月销售额:" cinsaies; salary=sales*commrate+1000; void display() cout"销售员:"nameendl; employee:display(); ; class manager: (1) protected: float monthpay; public: manager(int num,char *ch):employee(num,ch) monthpay=8000; void pay() salary=monthpay; void display() cout"经理:"nameendl; employee:display(); ; class salesmanager: (2) public: salesmanager(int num,char *ch): (3) monthpay=5000; commrate=0.005; void pay() coutname"所管部门月销售量:" cinsales; (4) void display() cout"销售经理:"nameendl; (5) ; void main() /主测试函数 salesmanager p1 (1001,"张三"); p1.pay(); p1.display(); 4.说明本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。说明本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。5.在对网络运行及维护前首先要了解网络,包括识别网络对象的硬件情况、判别局域网的拓扑结构和信道访问方式、确定网络互联以及用户负载等。常见的3种拓扑结构是星形、(1)与(2)拓扑结构,而常见的信道访问方式有(3)及(4)。网络配置和运行包括一系列保证局域网络运转的工作,主要有:选择网络操作系统和网络连接协议等;配置网络服务器及网络的外围设备,做好网络突发事件预防和处理;网络安全控制,包括网络安全管理、网络用户权限分配以及病毒的预防处理等。配置网络过程中要做好数据备份工作,一般来说,备份的硬件设备包括(5)、磁带和(6),而利用磁盘备份的方法常用的是磁盘镜像(7)以及磁盘阵列,其中前两者的区别在于(8)。网络维护是保障网络正常运行的重要方面,主要包括(9)、网络日常检查及网络升级。一定要建立起维护日志制度,记录网络运行和变更的情况,以保证维护经验的交流与延续。 6.问题1 则可供使用的合法IP还有多少哪些 7.在IPv4的头中使用的协议段在IPv6的固定头中不复存在。试说明这是为什么当采用IPv6协议的时候,ARP协议是否需要改变如果需要,是概念上的改变,还是技术上的改变 8.说明 在IE浏览器中输入yoyo电子邮局主页地址并回车后,网页的显示效果如下图所示。 网页中的元素说明 见下表。 网页中的元素说明类型说明图片文件名:“atmail.jpg”;宽度:80pixels;高度:80pixets“登录名:”文本框名称:“login_name”;尺寸:20字符“密码:”密码文本框名称:“login_password”;尺寸:20字符“类型:”下拉组合框文字列表项:“商务用户”、“VIP用户”、“免费用户”发送电子邮件超链接邮件发送地址:“vipmail”BBS超链接超链接地址:“”HTML 文本 htmlheadtitleyoyo邮局主页/rifle/headbodyp align=“center”bfont color=“#800080”face=“楷体_GB23 12”size=“5”yoyo邮局/font/b/pp align=“center” (1)/p p align = "left" /p p align ="left" 用户登录/p table tr td width = "100" height = "16" div align = "right" 登录名:/div /td (2)/table table tr td width = "100"height = "16" div align = "right" 密码/div /td (3)/table table tr td width = "100" div align = "right" 类型/div /td select onchange = "changeBackURL_ "name = "select" option 商务用 /option option 免费用户 (4) /option /select /table p /p p /pVIP 服务咨询邮箱: (5) a href = "http:/bbs. yoyo. com" 参加yoyo 邮局社区讨论 /a /body /html 9.说明 这是一个修改字符串的题目,此题中将字符串“hello,I am not a student,I do not likecomputer!”中的“not”去掉,并在Web页中显示。当离开此Web页时,将自动启动收藏夹。 HTML 文本 html !-省略部分为HTML框- (1) /JavaScript区域开始标识 !- /HTML的注释符 vay a="hello,I am not a student,I do not like computer!" ; /定义变量,并赋初值 vay b=0; vayc=" "; if(docurment.all) /如果是IE浏览器,则执行花括弧内的语句,否则弹出一个警告对 /话框,在对话框中显示“对不起,此Web页无法显示” while( (2) ) /查找字符串a中是否有not,如果有则将字符串a中的not,去掉, /然后赋给变量c。 (3) =asubstring(b,aindexOf("not",b) b+=a.indexOf("not",b)+4; c+=a.substring( (4) ),a.length); window.alert(“单击确定显示修改后的字符串”); /弹出一个警告对话框,在对话框中显示 /“单击确定显示修改后的字符串” document.write("The final string is:br)";/在Web页内输出的字符串,“The final /string is,并加回车符 documentwrite(c+"br"); /在Web页内输出修改后的字符串,并加回车 else windowalert(“对不起,此Web页无法显示”) function folder() /定义一个函数 (5) (http:/wwwdlrineduca,myhomepage,) /自动开启收藏夹,括号中的地址可以随便换。通过在 body *标识中加入onUnload=folder()来激活此函数 /- - /HTML的注释符 /Script !-省略部分为HTML框- /html 10.问题2 使用内部IP进行地址转换,若用一台主机连接内外两个网络,请说出两种不同的网络接法,并进行比较 11.问题3 Internet上保留了哪些内部IP地址可以供使用 12. 为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为X轴,垂直向下方向设为Y轴。 设某种显示器的像素为128×128,即在每条水平线和每条垂直线上都有128个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中x和y都是整数,0x127, 0y127。 现用一维数组MAP来存储整个一屏显示的位图信息。数组的每个元素有16位二进位,其中每位对应一个像素,“1”表示该像素“亮”,“0”表示该像素“暗”。数组MAP的各个元素与屏幕上的像素相对应后,其位置可排列如下: MAP(0),MAP(1),MAP(7) MAP(8),MAP(9),MAP(15) MAP(1016),MAP(1017),MAP(1023) 下述算法可根据用户要求,将指定坐标(x,y)上的像素置为“亮”或“暗”。 在该算法中,变量X,Y,V,S,K都是16位无符号的二进制整数。数组BIT中的每个元素BIT(K)(K=0,15)的值是左起第K位为1,其余位均为0的16位无符号二进制整数,即BIT(K)的值为215-k。 第1步 根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素 MAP(V)。这一步的具体实现过程如下: 1将x送变量X,将y送变量Y; 2将Y左移 (1) 位,仍存入变量Y; 3将X右移 (2) 位,并存入变量S; 4计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。 第2步 算出指定像素在MAP(V)中所对应的位置K(K=0,15)。这一步的具体实现过程如下:将变量X与二进制数 (3) 进行逻辑乘运算,并存入变量K。 第3步 根据用户要求将数组元素MAP(V)左起第K位设置为“1”或“0”。这一步的具体实现过程如下: 1为把指定像素置“亮”,应将MAP(V)与BIT(K)进行逻辑 (4) 运算,并存入MAP(V)。 2为把指定像素置“暗”,应先将BIT(K)各位取反,再将MAP(V)与BIT(K)进行逻辑 (5) 运算,并存入MAP(V)。 13. 函数int commstr(char * str1,char * str2,int * sublen)从两已知字符串str1和str2中,找出它们的所有最长的公共子串。如果最长公共子串不止1个,函数将把它们全部找出并输出。约定空串不作为公共子串。 函数将最长公共子串的长度送入由参数sublen所指的变量中,并返回字符串str1和str2的最长公共子串的个数。如果字符串str1和str2没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。 int strlen(char * s) char *t=s; while( * +); return t-s-1; int commstr(char) *str1,char *str2,int *sublen char*s1, *s2; int count=0,len1 ,len2,k,j,i,p; len1:=strlen(str1) len2 = strlen(str2); if(len1len2) s1=str1 ;s2=str2; else len2 = len1;s1 = str2;s2 = str1; for(j=len2;j0;j-) /*从可能最长子串开始寻找*/ for(k=0; (1) :len2;k+) /*k为子串s2的开始位置*/ for(i=0;s1 (2) !=0;i+;) /*i为子串s1的开始位置*/ /*s1的子串与s2的子串比较*/ for (p=0;pj)&& (3) ;p+); if ( (4) ) /*如果两子串相同*/ for(p=0);pj;p+ /*输出子串*/ printf ("%c",s2k+p); printf ("n"); count+;/*计数增1 */ if (count0) break; *sublen=(count0) (5) :0; return count; 14. 已知窗体上有两个名为cmdGene和cmdSort的命令按钮。单击cmdCene按钮时,随机产生10个1,100范围内的整数并将它们放在数组intA中;单击cmdSort按钮时,用选择法排序这10个数并输出。 Dim intA(1 To 10)As integer Private Sub cmdGene_Click_ Dim intl As Integer Randomize For intl = 1 To 10 intA(intl) = (1) Next intl End Sub Private Sub cmdSort_Click_ Dim intl, intJ,intMin, intTemp As Integer For intl = 1 To 9 intMin = intA(intl) For intJ= (2) To 10 If intA(intJ) intMin Then Temp = intA(intJ) intA(intJ)= (3) intMin = intTemp End If Next intJ (4) (5) For intl = 1 To 10 Print Str(intA(intl)+" " Next intl Next lntl Print End Sub 15. 函数palindrome(char s)的功能是,判断字符串s是否为回文字符串,若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。 int palindrome( char s ) char * pi, * pj; pi=s; pj=s+strlen(s)-1; while( pipj&& (1) ) pi + ;pj - if( (2) )return -1; else return 0; 函数f(char * str,char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。 例如若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出3个子字符串,分别为“12”、“4”和“5”。 void f( char * str, char del) int i ,j ,len; len = strlen (str) i=0; while(i len) while( (3) )i+; /*忽略连续的标志字符*/ /*寻找从stri开始直到标志字符出现的一个子字符串*/ j=i+1; while(strj != del && strj ! = 0)j + (4) : 0; /*给找到的字符序列置字符串结束标志*/ printf("%st",&stri); (5) ; 16. 函数QuickSort是在一维数组An上进行快速排序的递归算法。 void QuickSort( int A ,int s,int t) int i=s,j=t+1,temp; int x=As; do do i + ;while (1) ; do j - ;while(Ajx); if(ij)temp=Ai; (2) ; (3) ; while(ij); Aa =Aj;Aj =x; if(si-1) (4) ; if(j+1t) (5) ; 17. 设有一个带表头结点的双向循环链表L,每个结点有4个数据成员:指向前驱结点的指针prior、指向后继结点的指针next、存放数据的成员data和访问频度freq。所有结点的freq初始时都为0。每当在链表上进行一次L.Locate(x)操作时,令元素值x的结点的访问频度 freq加1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。 void Locate( int &x) 结点类型说明 * p =first - next; while(p!=frist&& (1) )P=P-next; if(p! =first) /*链表中存在x*/ (2) ; 结点类型说明 * current = P; /*从链表中摘下这个结点*/ Current - prior - next = current - next; Current - next - prior = current - prior; P = current - prior; /*寻找重新插入的位置*/ While(p! =first && (3) )p=p-prior; Current- next = (4) ; /*插入在P之后* Current - prior = P; P - next - prior = current; P-next= (5) ; else printf("Sorry. Not find! n"); /*没找到*/ 18. 源程序文件vectorClass.cpp,其中定义了用于表示向量的类vector,但类vector的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整,并给出输出结果。 1补充类vector的构造函数,该函数有参数x和y,它们都是int型的数据,默认值都为 0。请使用参数列表的形式分别将类的数据成员a和b分别初始化为参数x和y的值。 2完成类vector的成员函数input(int x,int y)的定义,将int型的参数x和y分别赋值给数据成员b和a。 3完成类vector的友元函数friend double Multiply(vector &x,vector &y)的定义,先定义 double型的临时变量c,然后将参数对象x和对象y的数据成员a与b分别相乘再相加后赋值给c,最后返回c的值。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件vectorClass.cpp清单如下: #include iostream. h class vector int a; int b; public: vector( (1) ): (2) void input(int x, int y) (3) void output_ cout(a,b")"