没有合适的资源?快使用搜索试试~ 我知道了~
程序员-3期(PX014) 2014年上半年软考程序员下午试卷参考答案版.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 33 浏览量
2022-07-14
10:06:29
上传
评论
收藏 564KB DOCX 举报
温馨提示
试读
12页
程序员-3期(PX014) 2014年上半年软考程序员下午试卷参考答案版.docx 学习资料 复习资料 教学资源
资源推荐
资源详情
资源评论
2014 年上半年 程序员 下午试卷 案例
[真题][答案]
案例 第 1 题 2014 上(共 15 分)
阅读以下说明和流程图, 填补流程图中的空缺(1)-(5),将解答填入答题纸的对应栏内。
指定网页中, 某个关键词出现的次数除以该网页长度称为该关键词在此网页中的词频。对新
闻类网页,存在一组公共的关键词。因此,每个新闻网页都存在一组词频, 称为该新闻网页的特
征向量。
设两个新闻网页的特征向量分别为:
甲(a<sub>1</sub>,a<sub>2</sub>,…,a<sub><em>k</em></sub>)、
乙(b<sub>1</sub>,b<sub>2</sub>,... ,b<sub><em>k</em></sub>),
则计算这两个网页的相似度时需要先计算它们的内积
S=a<sub>1</sub>b<sub>1</sub>+a<sub>2</sub>b<sub>2</sub>+…+a<sub><em>k</em></sub
>b<sub><em>k</em></sub>。一般情况下,新同网页特征向量的维数是巨大的,但每个特征向量中非零元素却
并不多。 为了节省存储空间和计算时间,我们依次用特征向量中非零元素的序号及相应的词频值来简化特
征向量。为此,我们用(NA(i),A(i)|i=1,2,...,m)和(NB(j),B(j)|j=1,2,...,n)来简化两个网页的特征
向量。 其中:NA(i)从前到后描述了特征向量甲中非零元素 A(i)的序号(NA(1)<NA(2) < ...),
NB(j)从前到后描述了特征向量乙中非零元素 B(j)的序号(NB(1) <NB(2) <…)。
下面的流程图描述了计算这两个特征向量内积 S 的过程。
问题 1.1
参考答案:【参考答案】
(1)0
(2)S+A(i)B(j) 或 等价表示
(3)i>m 或 i=m+1 或 等价表示
(4)j>n 或 j=n+1 或 等价表示
(5)i>m or j>n 或 i=m+1 or j=n+1 或 等价表示
【试题解析】
本题是简化了的个大数据算法应用之例。世界上每天都有大量的新闻网页,门户网站需要将其自动进行分
类,并传送给搜索的用户。为了分类,需要建立网页相似度的衡量方法。流行的算法是,先按统一的关键
词组计算各个关键词的词频,形成网页的特征向量,这样,两个网页特征向量的夹角余弦(内积/两个向
量模的乘积),就可以衡量两个网页的相似度。因此,计算两个网页特征向量的内积就是分类计算中的关
键。
对于存在大量零元素的稀疏向量来说,用题中所说的简化表示方法是很有效的。这样,求两个向量的内积
只需要在分别从左到右扫描两个简化向量时,计算对应序号相同(NA(i)=NB(j))时的 A(i)*B(j)之和(其
他情况两个向量对应元素之乘积都是 0)。因此,流程图中(2)处应填 S+A(i)*b(j),而累计的初始值 S
应该为 0,即(1)处应填 0。
流程图中,NA(i)<NB(j)时,下一步应再比较 NA(i+1)<NB(j),除非 i+1 已经越界。 因此,应先执行
i+1→i,再判断是否 i>m 或 i=m+1(如果成立,则扫描结束)。因此(3) 处应填 i>m 或 i=m+1。
流程图中,NA(i)>NB(j)时,下一步应再比较 NA(i)<NB(j+1),除非 j+1 已经越界。 因此,应先执
行 j+1→j,再判断是否 j>n 或 j=n+1(如果成立,则扫描结束)。因此(4)处应填 j>n 或
j=n+1。(5)处应填扫描结束的条件,i>m or j>n 或 i=m+1 or j=n+1,即两个简化向量之一扫描
结束时,整个扫描就结束了。
案例 第 2 题 2014 上
(共 15 分)
阅读以下说明和 C 函数,填补代码中的空缺(1)~(5),将解答填入答题纸的对应栏内。
【说明 1】
函数 isPrime(int n) 的功能是判断 n 是否为素数。若是,则返回 1,否则返回 0。素数是只能被 1 和自
己整除的正整数。例如,最小的 5 个素数是 2,3,5,7,11。
【C 函数】
.
【说明 2】
函数 int minOne(int arr[],int k) 的功能是用递归方法求指定数组中前 k 个元素中的最小者,并作为
函数值返回。
【C 函数】
问题 2.1
参考答案:【参考答案】
(1) n%2==0, 或!(n%2), 或其等价形式
(2) n%k==0, 或!(n%k), 或其等价形式
(3) arr[0], 或*arr, 或其等价形式
(4) k-1,或其等价形式
(5) t
【试题解析】
本题考查 C 程序的基本语法和运算逻辑。
首先应认真分析题目中的说明,然后确定代码结构和各变量的作用。
函数 isPrime(int n)的功能是判断 n 是否为素数。根据素数的定义,小于 2 的数和大于 2 的偶数都不是素
数,n 是偶数可表示为“n%2 等于 0”,因此空(1)处应填入“n% 2==0”,或者“!(n%2)”。在 n 是大
于 2 的奇数的情况下,下面的代码从 3 开始查找 n 的因子,直到 n 的平方根为止。
若 k 的值是 n 的因子,则说明 n 不是素数。因此,空(2)处应填入“n%k==0”,或者“!(n%k)”。
函数 int minOne(int tarr[], int k)的功能是用递归方法求指定数组中前 k 个元素中的最小者,显然,
k 为 1 时,这一个元素就是最小者。因此,空(3)处应填入“arr[0]”或其等价形式。
空(4)所在的语句是通过递归方式找出 arr[1]~arr[k-1]中的最小者,第一个实参指出从 arr[1]开始,
第二个参数为元素个数, 为 k-1 个, 因此空(4)应填入“k-1”。
接下来的处理就很明确了, 当 t 表示 arr[1]~arr[k-1]中的最小者, 其与 arr[0]比较后就可以得到
arr[0]~arr[k-1]中的最小者, 因此空(5)处应填入“ t”。
案例 第 3 题 2014 上(共 15 分)
阅读以下说明和 C 程序, 填补代码中的空缺(1)~(5), 将解答填入答题纸的对应栏内。
【说明】函数 areAnagrams(char*fstword,char*sndword )的功能是判断 fstword 和 sndword 中的单词
(不区分大小写)是否互为变位词,若是则返回 1,否则返回 0。所谓变位词是指两个单词是由相同字母的
不同排列得到的。例如,”triangle“与“ integral” 互为变位词,而“dumbest”与 . “stumble”不
是。
函数 areAnagrarns 的处理思路是检测两个单词是否包含相同的字母且每个字母出现的次数也相
同。 过程是先计算第一个单词(即 fstword 中的单词)中各字母的出现次数并记录在数组
counter 中,然后扫描第二个单词(即 sndword 中的单词)的各字母,若在第二个单词中遇到与
第一个单词相同的字母, 就将相应的计数变量值减 1, 若在第二个单词中发现第一个单词中不
存在的字母, 则可断定这两个单词不构成变位词。最后扫描用于计数的数组 counter 各元素,
若两个单词互为变位词, 则 counter 的所有元素值都为 0。函数 areAnagrams 中用到的部分标准
库函数如下表所述。
【C 函数】
剩余11页未读,继续阅读
资源评论
努力搬砖的小王
- 粉丝: 16
- 资源: 7706
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功