考试总分:5分
考试类型:模拟试题
作答时间:60分钟
已答人数:967
试卷答案:有
试卷介绍: 2002年程序员试卷(下)
A(1),S);elseif(S->data>(*tree)->data)SortTreelnsert(
B(2),S);}[函数5.2说明]函数voidTraversalTree(BTREE*tree)用非递归方法,对以tree为根结点指针的二叉树进行后序遍历。[函数5,2]voidTraversalTree(BTREE*tree){BTREE*stack[1000],*p;inttag[1000],top=0;p=tree;do{while(p!=NULL){stack[++top]=p;
C(3);tag[hop]=0;/*标志栈顶结点的左子树已进行过后序遍历*/:}while(top>0&&
D(4)){/*栈顶结点的右子树是否被后序遍历过*/p=stack[top--];putchar(p->data);}if(top>0){/*对栈顶结点的右子树进行后序遍历*/
E(5);tag[top]=1;}}while(top>0);}[15分]
A(1),……,MAP(7)MAP(8),MAP(9),……,MAP(15)……MAP(1016),MAP(1017),……,MAP(1023)下述算法可根据用户要求,将指定坐标(x,y)上的像素置为“亮”或“暗”。在该算法中,变量X,Y,V,S,K都是16位无符号的二进制整数。数组BIT中的每个元素BIT(K)(K=0,…,15)的值是左起第K位为1,其余位均为0的16位无符号二进制整数,即BIT(K)的值为2l5-k。[算法]第1步根据用户指定像素的位置坐标(x,y),算出该像素的位置所属的数组元素MAP(V)。这一步的具体实现过程如下:1、将x送变量X,将y送变量Y;2、将Y左移(1)位,仍存入变量Y;3、将X右移
B(2)位,并存入变量S;4、计算Y+S,存入变量V,得到像素的位置所属的数组元素MAP(V)。第2步算出指定像素在MAP(V)中所对应的位置K(K=0,…,15)。这一步的具体实现过程如下:将变量X与二进制数
C(3)进行逻辑乘运算,并存入变量K。第3步根据用户要求将数组元素MAP(V)左起第K位设置为”1”或”0”。这一步的具体实现过程如下:,1、为在指定像素置“亮”,应将MAP(V)与BIT(K)进行逻辑
D(4)运算,并存入MAP(V)。2、为在指定像素置“暗”,应先将BIT(K)各位取反,再将MAP(V)与BIT(K)进行逻辑
E(5)运算,并存入MAP(V)。[15分]
A(1);while(j>=0&&t<a[j]){/*在有序部分中寻找元素a[i]的插入位置*/
B(2);j--;}
C(3);}}[函数3.2说明]递归函数invert(inta[],intk)将指定数组中的前k个元素逆置。[函数3.2]voidinvert(inta[],intk);{intt;if(
D(4)){invert(
E(5));t=a[0];a[0]=a[k-1];a[k-1]=t;}}[15分]
A(1):for(;
B(2);s1++,s2++);}[函数2.2说明].本函数输入n(#defineMAXLINE1000intmaxindex(inta[],int*index){inti,n;do{printf("Pleaseinputn\n");scanf("%d",&n);}while(
C(3));/*保证输入的n在限定范围内*/for(i=0;i<n;i++)scanf("%d",&a[i]);*index=0;for(i=1;i<n;i++)if(
D(4))*index=i;return
E(5);}[15分]
A(1);factor=2;while(factor<=range){if(
B(2)){/*筛子最小数是素数*/printf(“%d\t”,factor);k=factor;while(k<=range){/*移走素数的倍数*/
C(3);/*筛中的个数减一*/k=
D(4);}}
E(5);}[15分]