【说明】 对于大于1的正整数n,(x+1)n可展开为 下面流程图的作用是计算(x+1)n展开后的各项系数(i=0,1,….,n)并依次存放在数组A[0…n]中。方法是依次计算k=2,3,..,n时(x +1)k的展开系数并存入数组A,在此过程中,对任一确定的k,利用关系式,按照i递减的顺序逐步计算并将结果存储在数组A中。其中,和都为1,因此可直接设置A[0]、A[k]的值为1。 例如,计算(x+1)3的过程如下: 先计算 (x+1)2 ( 即k=2) 的各项系数,然后计算(x+1)3(即k=3)的各项系数。 K=2时,需要计算,和,并存入A[0] ,A[1]和A[2],其中A[0]和A[1]的值已有,因此将(即 A[1])和即 (A[0])相加得到的值并存入A[1]。 k=3 时,需要计算,和和,先计算出(由)得到并存入A[2],再计算(由得到)并存入A[1]。 |
问题:1.1 【流程图】 注:循环开始框内应给出循环控制变量的初值和终值,默认递增值为1。 格式为:循环控制变量=初值,终值,递增值。 |
【说明】 对n个元素进行简单选择排序的基本方法是:第一趟从第1个元素开始,在n个元素中选出最小者,将其交换至第一个位置,第二趟从第2个元素开始,在剩下的n-1个元素中选出最小者,将其交换至第二个位置,依此类推,第i趟从n=i+1个元素中选出最小元素,将其交换至第i个位置,通过n-1趟选择最终得到非递减排序的有序序列。 |
问题:2.1 【代码】 #include <stdio.h> void selectSort(int data[ ],int n) //对 data[0]~data[n-1]中的n个整数按非递减有序的方式进行排列 { int i,j,k; int temp; for(i=0;i<n-1;i++){ for(k=i,j=i+1;(1);(2)) //k表示data[i]~data[n-1]中最小元素的下标 if(data[j]<data[k]) (3) if(k!=i) { //将本趟找出的最小元素与data[i]交换 temp=data[i]; (4) ;data[k]=temp; } } } int main() |
【代码1】 typedef enum {A,B,C,D} EnumType; EnumType f(int yr) { if(0 == yr%400) { return A; } else if (!(yr%4)) { if(0!=yr%100) return B; else return C; } return D; } 【代码2】 【代码3】 |
问题:3.1 (4分) 对于代码1,写出下面的函数调用后x1、x2、x3和x4的值。 x1=f(1997); x2=f(2000); x3=f(2100); x4=f(2020); |
问题:3.2 (5分) (1)写出代码2进行时输入为3的输出结果; (2)写出代码2进行时输入为5的输出结果。 |
问题:3.3 (6分) 写出代码3运行后的输出结果。 |
【说明】 当数组中的元素已经排列有序时,可以采用折半查找(二分查找)法查找一个元素。下面的函数biSearch(int r[],int low,int high,int key)用非递归方式在数组r中进行二分查找,函数biSearch_rec(int r[],int low,int high,int key)采用递归方式在数组r中进行二分查找,函数的返回值都为所找到元素的下标;若找不到,则返回-1。 【C函数1】 【C 函数2】 |
问题:4.1 (12分) 请填充C函数1和C函数2中的空缺,将解答填入答题纸的对应栏内。 |
问题:4.2 (3分) 若有序数组中有n个元素,采用二分查找法查找一个元素时,最多与( )个数组元素进行比较,即可确定查找结果。 (7)备选答案: A.[log2(n+1)] B.[n/2] C.n-1 D.n |
【说明】 以下Java代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物件 (Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账。设计如图5-1所示类图。 图5-1类图 |
问题:5.1 【Java代码】 interface Item{ public void accept(Visitor visitor); public double getPrice(); } class Book (1){ class Cashier(4){ public double getTotal() { class ShoppingCart { for(Item item:items) { |
【说明】 以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。 图6-1 类图 |
问题:6.1 【C++代码】 using namespace std; class Book; class Visitor { public: virtual void visit(Book* book)=0; //其它物品的visit方法 }; class Item { class Book (1){ class ShoppingCart { for(int i=0;i <items.size();i++) void add(Item*e) { |
,