2、5.执行下面程序段时,执行S语句的次数为_______.for(inti=1;i<=n;i++)for(intj=1;j<=i;j++)S;An2Bn2/2Cn(n+1)Dn(n+1)/26.下面算法的时间复杂度为BO(n).intf(unsignedintn){if(n==0
3、
4、n==1)return1;elsereturnn*f(n-1);}AO(1)BO(n)CO(n2)DO(n!)二、填空题1.数据的逻辑结构被分为集合结构、线性结构、树型结构和图形结构四种.2.数据的存储结构被分为顺序、链接、索引和散列四种;3.在线性结构、
5、树形结构和图形结构中,前驱和后继结点之间分别存在着1:1、1:N和M:N的联系.4.一种抽象数据类型包括数据定义和操作两个部分.5.当一个形参类型的长度较大时,应最好说明为引用,以节省参数值的传输时间和存储参数的空间.6.当需要用一个形参访问对应的实参时,则该形参应说明为引用.7.在函数中对引用形参的修改就是对相应实参的修改,对值或赋值形参的修改只局限在该函数的内部,不会反映到对应的实参上.8.当需要进行标准I/O操作时,则应在程序文件中包含iostream.h头文件,当需要进行文件I/O操作时,则应在程序文件中包含fstream.
6、h头文件.9.在包含有stdlib.h头文件的程序文件中,使用rand()%21能够产生出0~20之间的一个随机整数.10.一个记录r理论上占有的存储空间的大小等于所有域的长度之和,实际上占有的存储空间的大小即记录长度为sizeof(r).11.一个数组a所占有的存储空间的大小即数组长度为sizeof(a),下标为i的元素a[i]的存储地址为a+i,或者为a+i*sizeof(a[i]).12.函数重载要求类型上,数量上或排列次序上有所不同.13.对于双目操作符,其重载函数带有两参数,其中至少有一个为用户自定义的类型.14.若对象r
7、a和rb中至少有一个是属于用户定义的类型,则执行ra==rb时,需要调用==重载函数,该函数的第一个参数应与ra的类型相同,第二个参数应与rb的类型相同.15.从一维数组a[n]中顺序查找出一个最大值元素的时间复杂度为O(n),输出一个二维数组b[m][n]中所有元素值的时间复杂度为O(m*n).16.在下面程序段中,s=s+p语句的执行次数为_n_,p*=j语句的执行次数为n(n+1)/2,该程序段的时间复杂度为O(n2).inti=0,s=0;while(++i<=n){intp=1;for(intj=1;j<=i;j++)p*
8、=j;s=s+p;}17.一个算法的时间复杂度为(3n2+2nlog2n+4n-7)/(5n),其数量级表示为O(n).18.从一个数组a[7]中顺序查找元素时,假定查找第一个元素a[0]的概率为1/3,查找第二个元素a[1]的概率为1/4,查找其余元素的概率均相同,则在查找成功时同元素的平均比较次数为35/12三、应用题设计二次多项式ax2+bx+c的一种抽象数据类型,假定起名为Quadratic,该类型的数据部分为三个系数项a,b和c,操作部分为:请写出上面每一个操作的具体实现.1)初始化数据成员a,b和c(假定用记录类型Qua
9、dratic定义数据成员),每个数据成员的缺省值为0.QuadraticInitQuadratic(floataa=0,floatbb=0,floatcc=0);QuadraticInitQuadratic(floataa,floatbb,floatcc){Quadraticq;q.a=aa;q.b=bb;q.c=cc;returnq;}2)做两个多项式加法,即使对应的系数相加,返回相加结果.QuadraticAdd(Quadraticq1,Quadraticq2){Quadraticq;q.a=q1.a+q2.a;q.b=q1.b
10、+q2.b;q.c=q1.c+q2.c;returnq;}3)根据给定x的值计算多项式的值.floatEval(Quadraticq,floatx){return(q.a*x*x+q.b*x+q.c);}4)计算方程ax2+bx+c=