i=i+1 (4)inti=1; for(in j<=n;j+) 【解答】 (1) (2) i(⊥1) (3)i=1时,=2,=j+i=1+2=2-1 i=2时,i=3 i=3时,=4,=j+i=(3+1+2)+4=4+1+2÷3 生时,=5=j+i=(4+1+2+3)+5=5-1+2+3-4 i=k时,一k+1,=j+i=(k+1)+(!十2-3+4+…+k) 因为y=(+1)+∑i≤n 所以(k+1)+2 k(k+1)k2+3k2 解出满足上述不等式的k的最大值,即为语句1=1+1的程序步数 (4)i=1结束时,=1∑j=1+ n(n+1) i=2结束时, n(n+1)i+n(n+1) i=3结束时,= 2/n(n+1) 3/x(n+1) 一般地 k结束时,-1 100+n 求出满足此不等式的k的最大值,语句1-i+;的程序步数为(k+1) 1-8试编写一个函数计算n!*2的值,结果存放于数组A[ arraySize]的第n个数组元素中, 0≤n≤ array Size。若设计算机中允许整数的最大值为 maxInt,则当n> arraySize或者对 于某一个k0≤k≤n),使得k!*2> maxInt时,应按出错处理。可有如下三种不同的出错
处理方式 (1)用cer<<及ekit(1)语句来终止执行并报合错误 (2)用返回整数函数值C,1来实现算法,以区别是正常返回还是错误返回; (3)在函数的参数表设置一个引用型的整型变量来区别是止常返回还是某种错误 返同 试讨论这三种方法各自的优缺点,并以你认为是最好的方式实现它 【解答】 define array Size 140 t define MaxInt Ox7ffiffff int calc(int T:]. int n)t T[0=1 for(i=l:i<n; iI +)I T=T-1*i*2; if(Tli] > edge Tnl=Tn·门n*2; cout<<T[<"<n<<"-"<< T["<"<"endl; return 1 id main() int A[arraySize]: int i for(i0:i< array Size;i+-) if( cale(A, i))f cout<<" failed at"“<i≤ 1-9(1)在下面所给函数的适当地方插入计算 count的语句: void d( Array Element xL], int n)I while(i<=(n/2)↓
X订+=x[i+1];i+t; (2)将由(1)所得到的程序化简。使得化简后的程序与化简前的程序具有相同的 count 值 (3)程序执行结束时的 count值是多少? (4)使用执行频度的方法计算这个程序的程序步数,画出程序步数统计表 【解答】 (1)在适当的地方插入计算 coulnt语句 void d( ArrayElement x], int n)( 3+=2 i t= 2; count--; 针对whle语句 s while(i < n); while(i <=(n/2))I count++ ,/针对whe语句 i+1]; count+T count++ /针对最后一次 while语句 (2)将由(1)所得到的程序化简。化简后的程序与原来的程序有相同的 count值 void d( ArrayElement x[]. int n 9 while ( hie(i<(n/2)){
(3)程序执行结束后的 count值为3n+3 当n为偶数时, count=3米(n/2)+3*(n/2)+3=3*n-3 当n为奇数时,coun=3*((n+1)/2)+3*(n-1).2)-3=3*n+3 (4)使用执行频度的方法计算程序的执行步数,画出程序步数统计表: 行号 程序语句 次执行步数执行频度 程序步数 void d( Array Element x[]. int n)4 0 n+1)/2」 (n:1)2 t while ( i <= n); L(n+1):2」(n11)2 while (i <=(n/2))t Lt:2+]」 Ln2」 0 0 0 (nfo: 3n+3 1.4其他练习题 1-10填空题 (A)由某一数据对象和该对象中各个数据成员间的关系组成。依据所有数据成员 之间关系的不同 )分为两大类:(B)和(()。在(B)中的各个数据成员 依次排列在一个线性序列中;(C)的各个数据成员不再保持在一个线性序列中,每个数 据成员可能与零个或多个其他数据成员发生联系。 根据视点的不同,数据结构分为数据的(D)和(E)。(D)是面向问题的, E)是面向计算机的 【解答】 A.数据结构B.线性结构C.非线性结构 D.逻辑结构E.存储结构 1-11判断下列叙述的对错。如果正确,在题前打“√”,否则打“×” ()数据元素是数据的最小单位。 (2)数据结构是数据对象与对象中数据元素之间关系的集合 (3)数据结构是具有结构的数据对象。 (4)数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要建立的。 (5)算法和程序原则上没有区别,在讨论数据结构时二者是通用的
【解答】 1-12判断下列叙述的对错。如果正确,在题前打“√”,否则打“×”。 (1)所谓数据的逻辑结构是指数元素之间的逻辑关系 (2)同一数据逻辑结构中的所有数据元素都具有相同的特性是指数据元素所包含的数 据项的个数都相等 (3)数据的逻辑结构与数据元素本身的内容和形式无关 (4)数据结构是指相互之间存在一种或多种关系的数据元素的全体。 5)从逻辑关系上讲,数据结构主要分为两大类:线性结构和非线性结构 【解答】 (5)√ 1-13填空题 算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。它应当具有 输入、输出、(A)、有穷性和可执行性等特性。 算法效率的度量分为(B)和(C)。(B)主要通过在算法的某些部位插装时 间函数来测定算法完成某一规定功能所需的时间。而(C)不实际运行算法,它是分析 算法中语句的执行次数来度量算法的时间复杂度 程序所需的存储空间包含两个部分(D)和(E)。(D)空间的大小与输 输出数据的个数多少,数值大小无关;(E)空间主要包括其大小与问题规模有关的成分 变量所占空间,引用变量所占空间,以及递归栈所用的空间,还有在算法运行过程中动态分 配和回收的空间 【解答】 A.确定性3.事后测量C.事前估计 D.固定部分E.可变部分 1-14有下列几种用二元组表示的数据结构,试画出它们分别对应的图形表示(当出现多个 关系时,对每个关系画出相应的结构图),并指出它们分别属于何种结构。 (1)A=(K,R),其中 K (2)B=(K,R),其中 K=(a,b,c,d,e,f,g,hi,R=ri {<a,b>,<b,c>,<c,>,<d,心>,<“,广,<f,g>,<g,h> (3)C=(K,R),其中 K=a,b,c,d,e,f,g,h/, R=r) r=(<d,b>,<d,g>,<b,a>,<b,C>,<g,e>,≤g,h>,<e,>} (4)D=(K,R),其中 K={1,2,3,4,5,6},R={r}, r-{(1,2),(2,3),(2,4),(3,4),(3,5),(3,6),(4,5),(4,6)}