软件设计(八)https://blog.csdn.net/ke1ying/article/details/128954569?spm=1001.2014.3001.5501
81、模块A将学生信息,即学生姓名、学号、手机等放到一个结构体系中,传递给模块B,模块A和B之间的耦合类型为 什么耦合?
数据耦合:指两个模块之间有调用关系,传递简单的数据值,相当于高级语言的值传递。
标记耦合:指两个模块之间传递的是数据结构。
所以答案是 标记耦合。
控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用的模块通过控制变量的值选择执行模块的某个功能。
内容耦合:当一个模块直接使用另一个模块的数据,或者通过非正常入口转入另一个模块的时候。
82、状态(state)模式:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。
83、编译过程进行语法分析主要分析的是 程序语句的结构是否合法。
解析:
编译过程一般分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成,以及出错处理和符号表管理。
语法分析是词法分析的基础上分析短语(表达式)、句子结构是否正确。
词法分析是识别一个个单词,基本字符,标识符,常数,运算符,界符。
84、设S是一个长度为n的非空字符串,其中字符各不相同,则其互异的非平凡子串(非空且不同于S本身)个数是多少个?
解析:
当 abcdefg字符串。
长度为6的非平凡子串:abcdef、bcdefg。所以是n-5=2个
长度为5的非平凡子串:abcde、bcdef、cdefg。所以是n-4=3个。
n-3=4
n-2=5
n-1=6
所以 (n+2)(n-1)/2 个。
85、某二叉树采用二叉链表表示(即结点的两个指针分别指示左、右孩子),当该二叉树包含k个结点时,其二叉链表结点中必有 多个 空的孩子指针。
解析:k+1
当二叉树包含k个结点时,链表中每个结点都有两个孩子指针,共2k个,每个指针包含一个父子关系。非空二叉树除了根结点外,每个结点都有唯一的父结点,因此2k个孩子指针中k-1个表示结点的父子关系,其余的k+1个孩子指针都为空指针。
86、解析:
1)无向连通图G的叙述中,任意两个顶点之间存在路径。(任意两个顶点之间不存在 边)
2)从G中任意顶点出发可遍历图中所有顶点。
3)G的邻接矩阵是对称矩阵。
87、现需要对一个基本有序的数组进行排序,此时采用最适应的算法为 插入排序算法,时间复杂度为 O(n)。
解析:
插入排序算法最好的情况下复杂度是O(n),其他情况下是O(n²)。
快速排序在有序的情况下,其计算复杂度最坏的情况下是O(n²),其他情况是O(nlgn)。
归并排序和堆排序算法在所有情况下的时间复杂度为O(nlgn)。
88、相对于TCP,UDP的优势是 开销较小。
传输协议层主要TCP和UDP。TCP较为复杂,有3次握手动作,传输过程中可以实现可靠性、流量控制和拥塞控制,因此开销较大。
而UDP协议主要通过端口号实现传输层的寻址,开销较小。
89、email使用两个协议,SMTP(简单邮件传送协议)和POP3(邮局协议)。
SMTP用于发送邮件,端口号是25。
Pop3接受邮件,端口号是110.
这两个都是基于TCP协议的应用层协议。
90、SNMP 是采用UCP协议封装的。
SMTP则采用的是TCP协议。