软考真题练04+编程

以下都是软考的真题(2018,上),纯手敲,无复制,

  1. 对有n个结点,e条边且采用数组表示法(即邻接矩阵存储)的无向图进行深度优先遍历,时间复杂度为(A)
    A.O(nn) B.O(ee) C.O(n+e) D.(ne)
    解析:在邻接表中,就是要依次访问每个顶点,然后再每个顶点中依次访问每条边,把这些边的终点的入度+1.及就是每个顶点每条边一次各要访问一遍;
    在邻接矩阵中,算法需要遍历邻接矩阵的每一个点,而邻接矩阵有n
    n个点。

  2. 计算机运行过程中,遇到突发事件,要求CPU暂时停止正在运行的程序,转去为突发事件服务,服务完毕,再自动返回源程序继续执行,这个过程称为中断,其处理过程中保存现场的目的是(C)
    A.防止丢失数据 B.防止对其他部件造成影响 C.返回去继续执行原程序D.为中断处理程序提供数据

  3. 流水线的吞吐率是指单位时间流水线处理的任务数,如果各段流水操作时间不同,则流水线的吞吐率是(C)的倒数。
    A.最短流水段操作时间 B.各段流水的操作时间总和 C.最长流水段操作时间 D.流水段数乘以最长流水段操作时间
    解析:流水线处理机在执行指令时,把执行过程分为若干个流水级,若各流水级需要的时间不同,则流水线必须选择各级中时间较大者为流水级的处理时间。

  4. 网络管理员通过命令行的方式对路由器进行管理,要确保ID,口令和会话内存的保密性,应采取的访问方式是(D)
    A.控制台 B.AUX C.TELNET D.SSH
    解析:SSH为Secure Shell 的缩写,由IETF的网络小组所制定;SSH为建立在应用层基础上的安全协议。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。

  5. 在安全通信中,S将所发送的信息使用(B)进行数字签名,
    A.S的公钥 B.S的私钥 C.T的公钥 D.T的私钥

  6. T收到该消息后可利用(A)验证该消息的真实性。
    A.S的公钥 B.S的私钥 C.T的公钥 D.T的私钥
    解析:数字签名技术是将摘要信息发送者的私钥加密,与原文一起传送给接受者。接收者只有用发送者的公钥才能解密被加密的摘要信息,与解密的摘要信息对比。如果相同,则说明收到的信息是完整的。

  7. 数据字典是结构化分析的一个重要输出。数据字典的条目不包括()。
    A外部实体 B数据流 C数据项 D基本加工
    解析:数据字典是指对数据的数据项,数据结构,数据流,数据存储,处理逻辑,外部实体等进行定义和描述,其目的是是对数据流程图中的各个元素做出详细说明,使用数据字典为简单的建模项目,其条目有数据流数据项数据存储基本加工。

  8. 工作量估算模型COCOMOII的层次结构中,估算选择不包括(C)
    A.对象点 B功能点  C用例数  D源代码行
    解析:COCOMOII模型也需要使用规模估算信息,在模型层次结构中有3种不同规模估算选择。对象点,功能点代码行

  9. (A)是一种函数式编程语言
    ALisp BProlog CPython DJava/C++
    解析:程序设计语言分为:命令式程序设计语言(基于动作,赋值Fortran,Pascal,C)、函数式程序设计语言(主要用于人工智能领域Lisp、ML)、逻辑程序设计(Prolog有很强的推理功能)、面向对象程序设计语言

  10. 将高级语言源程序翻译为可在计算机上执行的形式有多种不同的方式,其中(C)。
    A、编译方式和解释方式都生成逻辑上与源程序等价的目标程序
    B、编译方式和解释方式都不生成逻辑上与源程序等价的目标程序
    C、编译方式生成逻辑上与源程序等价的目标程序,解释方式不生成
    D、编译方式和解释方式都不生成逻辑上与源程序等价的目标程序
    解析:编译语言是一种以编译器来实现的编程语言先将代码编译为机器码然后运行。

编程题

package 编程题刷题;

import java.util.Scanner;

public class Day_02 {

   public static void main(String[] args) {
   	// TODO Auto-generated method stub
   	/*需求:
   	 * 输入一个矩阵,
   	 * 按照从外向里以顺时针的顺序依次打印出每一个数字,
   	 * 例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   	 *  则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
   	 *  
   	 * 思路:1.利用n维数组输入4*4的矩阵
   	 * 		2.4层for循环嵌套
   	 * 		3.判断输出
   	 * 
   	 *  */
   	int a [][]=new int[][]{{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
   	printAllsides(a);
   	
   }

   private static void printAllsides(int[][] a) {
   	// TODO Auto-generated method stub
   	if(a==null){
   		return;
   	}
   	int start=0;
   	while(start<a.length/2&&start<a[0].length){
   		printYibian(a,start);
   		start++;
   	}
   }

   private static void printYibian(int[][] a, int start) {
   	// TODO Auto-generated method stub
   	int row=a.length;
   	int col=a[0].length;
   	int endx=col-1-start;
   	int endy=row-1-start;
   	//从左到右第一行
   	for(int i=start;i<=endx;i++){
   		int	num=a[start][i];
   		System.out.print(num+" ");
   	}
   	
   	//从上到下最后一列
   	if(start<endy){
   		for(int i=start+1;i<=endy;i++){
   			int number=a[i][endx];
   			System.out.print(number+" ");
   		}
   	}
   	
   	//从右到左最后一行
   	if(start<endx&&start<endy){
   		for(int i=endy-1;i>=start;i--){
   			int number=a[endy][i];
   			System.out.print(number+" ");
   		}
   	}
   	//从下到上第一列
   	if(start<endy&&start<endy-1){
   		for(int i=endy-1;i>=start+1;i--){
   			int number =a[i][start];
   		}
   	}
   }
}




你可能感兴趣的:(刷题)