下面C++代码用于求斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。下面有关说法错误的 是( )。

fiboA( ) 用递归方式, fiboB() 循环方式
fiboA( ) 更加符合斐波那契数列的数学定义,直观易于理解,而 fiboB() 需要将数学定义转换为计算机程
fiboA( ) 不仅仅更加符合数学定义,直观易于理解,且因代码量较少执行效率更高
fiboB( ) 虽然代码量有所增加,但其执行效率更高
下面C++代码以递归方式实现合并排序,并假设 merge (int T[], int R[], int s, int m, int t) 函 数将有序(同样排序规则)的T[s..m]和T[m+1..t]归并到R[s..t]中。横线处应填上代码是( )。

mergeSort(SList, T2, s, m,len), mergeSort(SList, T2, m,t,len)
mergeSort(SList, T2, s, m-1,len), mergeSort(SList, T2, m+1,t,len)
mergeSort(SList, T2, s, m,len), mergeSort(SList, T2, m+1,t,len)
mergeSort(SList, T2, s, m-1,len), mergeSort(SList, T2, m-1,t,len)
读下面的C++代码,执行后其输出是( )。

1->120<===>2->120
1->120<===>1->120
1->120<===>1->2->3->4->5->120
1->120<===>2->3->4->5->6->120
下面的C++用于对 lstA 排序,使得偶数在前奇数在后,横线处应填入( )。

isEven(lstA[j]) && !isEven(lstA[j+1])
!isEven(lstA[j]) && isEven(lstA[j+1])
lstA[j] > lstA[j+1]
lstA[j] < lstA[j+1]
下面的C++代码用于将字符串保存到带头节点的双向链表中,并对重复的串计数,然后将最新访问的串的节 点放在链头便于查找。横线处应填入代码是( )。

if(pHead) {p->next = pHead->next, pHead->next->prev = p;}
if(pHead->next) {p->next = pHead->next, pHead->next->prev = p;}
p->next = pHead->next, pHead->next->prev = p;
触发异常,不能对空指针进行操作。
有关下面C++代码说法正确的是( )。

如果 x 小于10, rc 值也不会超过20
foo 可能无限递归
foo 可以求出 x 和 y 的最大公共质因子
foo 能够求出 x 和 y 的最小公倍数
面的C++代码实现对list的快速排序,有关说法,错误的是( )。

qSort(less) + qSort(greater) + (vector)pivot
(vector)pivot + (qSort(less) + qSort(greater))
(qSort(less) + (vector)pivot + qSort(greater))
qSort(less) + pivot + qSort(greater)
下面C++代码中的 isPrimeA() 和 isPrimeB() 都用于判断参数N是否素数,有关其时间复杂度的正确说 法是( )。

isPrimeA( ) 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 , isPrimeA() 优于 isPrimeB()
isPrimeA() 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 , isPrimeB() 绝大多数情况下优于 isPrimA
isPrimeA() 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 , isPrimeA( ) 优于isPrimeB( )
sPrimeA() 的最坏时间复杂度是 , isPrimeB( ) 的最坏时间复杂度是 , isPrimeA() 优于isPrimeB( )
下面C++代码用于有序 list 的二分查找,有关说法错误的是( )。

代码采用二分法实现有序 list 的查找
代码采用分治算法实现有序 list 的查找
代码采用递归方式实现有序 list 的查找
代码采用动态规划算法实现有序 list 的查找
在上题的 _binarySearch 算法中,如果 lst 中有 N 个元素,其时间复杂度是( )。

b
c
d
下面的C++代码使用数组模拟整数加法,可以处理超出大整数范围的加法运算。横线处应填入代码是( )。

c.push_back(t % 10), t = t % 10
c.push_back(t / 10), t = t % 10
c.push_back(t / 10), t = t / 10
c.push_back(t % 10), t = t / 10;
有关下面C++代码的说法正确的是( )。

上述代码构成单向链表
上述代码构成双向链表
上述代码构成循环链表
上述代码构成指针链表
通讯卫星在通信网络系统中主要起到()的作用。
信息过滤
信号中继
避免攻击
数据加密
小杨想编写一个判断任意输入的整数N是否为素数的程序,下面哪个方法不合适?( )
埃氏筛法
线性筛法
二分答案
. 枚举法
下面的排序算法都要处理多趟数据,哪种排序算法不能保证在下一趟处理时从待处理数据中选出最大或最 小的数据
选择排序
快速排序
堆排序
冒泡排序
同样的整数序列分别保存在单链表和双向链中,这两种链表上的简单冒泡排序的复杂度相同。( )
小杨想写一个程序来算出正整数N有多少个因数,经过思考他写出了一个重复没有超过N/2次的循环就能够算 出来
对数组 int arr[] = {2, 6, 3, 5, 4, 8, 1, 0, 9, 10} 执行 sort(arr, arr+10) ,则执行后 arr 中的数据调整为 {0, 1, 2, 3, 4,5,6,7,8,9,10}
下面的C++代码能实现十进制正整数N转换为八进制并输出。( )

插入排序有时比快速排序时间复杂度更低。( )
小杨设计了一个拆数程序,它能够将任意的非质数自然数N转换成若干个质数的乘积,这个程序是可以设计出来
贪心算法可以达到局部最优,但可能不是全局最优解。( )
以下C++代码能以递归方式实现斐波那契数列,该数列第1、2项为1,以后各项均是前两项之和。( )

小杨在生日聚会时拿一块H*W的巧克力招待来的K个小朋友,保证每位小朋友至少能获得一块相同大小的巧 克力。那么小杨想分出来最大边长的巧克力可以使用二分法。( )
归并排序的时间复杂度是O(1) 。( )
编程题 2
试题名称:烹饪问题
时间限制:1.0 s
内存限制:128.0 MB
3.2.1 问题描述

不同食材之间的组合可能产生奇妙的化学反应。具体来说,如果两种食材的美味度分别为 和 ,那么它们的契合度为x and y 。
其中, 运算为按位与运算,需要先将两个运算数转换为二进制,然后在高位补足 ,再逐位进行与运算。例如,
与 的二进制表示分别为 1100 和 0110 ,将它们逐位进行与运算,得到 0100 ,转换为十进制得到 ,因此12 and 6= 4。在 C++ 或 Python 中,可以直接使用 & 运算符表示与运算。
现在,请你找到契合度最高的两种食材,并输出它们的契合度。
3.2.2 输入描述
第一行一个整数 ,表示食材的种数。
编程题 1