根据过去的一些数据以及经验模型,人们往往可以总结出某种规律。按照这种规律, 又可以对不久的未来做大致的预测。例如,已知f(0)=1,f(1)=1,f(2)=2,如果f(x)大致为二次多项式,则f(3)大致为(65)。
A. 2
B. 3
C. 3.5
D. 4
阅读以下说明和C函数,填充函数中的空缺,将解答填入答题纸的对应栏内。
【说明】
下面的函数sort(int n,int a[])对保存在数组a中的整数序列进行非递减排序。由于该
序列中的元素在一定范围内重复取值,因此排序方法是先计算出每个元素出现的次数并
记录在数组b中,再从小到大顺序地排列各元素即可得到一个非递减有序序列。例如,
对于序列6,5,6,9,6,4,8,6,5,其元素在整数区间[4,9]内取值,因此使数组元素b[O]~b[5]的下标O~5分别对应数值4~9,顺序地扫描序列的每一个元素并累计其出现的次数,即将4的个数记入b[0],5的个数记入b[l],依此类推,9的个数记入b[5]。最后依
次判断数组b的每个元素值,并将相应个数的数值顺序地写入结果序列即可。
对于上例,所得数组b的各个元素值如下:
那么在输出序列中写入1个4、2个5、4个6、1个8、1个9,即得4,5,5,6,6,6,6,8,9,
从而完成排序处理。
【C函数】
void sort(int n,int a[])
(int *b;
int i, k, number;
int minimum=a[0], maximum=a 0];
/.minimum和maximum分别表示数组a的最小、最大元素值*/
For(i=1;i<n;i++) {
if (_(1) ) minimum = a[j];
else
if (_ (2) ) maximum = a[i];
}
number = maximum - minimum + 1;
if (number<=l) return;
b = (int *) calloc (number, sizeod (int) ;
if (!b) return;
for(f=0;i<n,i++){/*计算数组a的每个元素值出现的次数并记入数组b*/
k= a[i] - minimum; ++b[k];
}
/*按次序在数组a中写入排好的序列*/
l= (3) ;
for(k=0; k<number; k++)
for(; (4) ;一一b[k] )
a[i++】=minimum+ (5)’ ;
}
阅读以下说明和C++代码,填充代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
某应急交通控制系统(TraficControISy ,tem)在红灯时控制各类车辆(Vehicle)的通
行,其类图如图5-1所示,在紧急状态下应急车辆红灯时也可通行,其余车辆按正常规
则通行。
下面的C++代码实现以上设计,请完善其中的空缺。
include <typeinfo>
include <iostream>
using namespace std;
class Vehicle {/*抽象基类,车辆*/
public :
virtual void run () = 0;
};
class Emergency(/*抽象基类,可在红灯时通行的接口,函数均为纯虚函数*/
public:
(1)=0 //isEmergent()函数接口
(2)=0 //runRedLight()函数接口
};
class Car: public Vehicle {
public :
-car(){ }
void run () { /*代码略*/ }
};
Ciass Truck:public vehicie {
Public;
-Truck(){ }
Void run() { /*代码略*/}
};
Class policecar: (3) {
Private:
bool isEmergency;
public :
PoliceCar () : Car () , Emergency () { this=>isEmergency = false;
}
PoliceCar (bool b) : Car () , Emergency () { this=>isEmergency = b; }
~PoliceCar () { }
bool isEmergent () { ret irn (4) ; }
void runRedLight () { /*代码略*/ }
};
/*类Ambulance. FireEngine/*实现代码略*/
class TraficControISystem {/*交通控制类*/
private :
Vehicle*v[24]; int numVeh: cles./*在构造函数中设置初始值为0*/
public:
void control(){ //控制在紧急情况下应急车辆红灯通行,其他情况按常规通行
for (int i = 0; i<[numVehicles;++] {
Emergency*ev=dynamic_cast<Emergency*(v[i]);
if (ev !=0(5)-: runRedLight ()
Else (6)-:run()
}
}
Void add(vehicle){v[numvehicles++]=vehicle;}
/*添加车辆*/
Void shutdown(){for (int i =0;i<numvehicles;i++){ deletev[i];} }
}
int main () {
TraficControlSystem* tcs =new TraficControlSystem;
tcs->add (new Car () );, t cs->add (new PoliceCar ()) ;
tcs->add (new Ambulance ()) ; tcs- >add (new Ambulance (true)) ;
tcs->add (new FireEngine (true)) ; -.cs->add (new FireEngine ()) ;
tcs->add (new Truck ()) ;
tcs->control () ; tcs->shul Down () ;
delete tcs;
}