logo资料库

2002上半年程序员考试真题及答案-下午卷.doc

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
2002 上半年程序员考试真题及答案-下午卷 试题一 阅读下列算法说明和算法,将应填入 (n) 处的字句写在答题纸的对应栏内。 [算法说明] 为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素 设为原点,水平向右方向设为 x 轴,垂直向下方向设为 y 轴。 设某种显示器的像素有 128X128,即在每条水平线和每条垂直线上都有 128 个像素。这 样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中 x 和 y 都是整数,0≤x≤127,0 ≤y≤127。 现用一维数组 MAP 来存储整个一屏显示的位图信息。数组的每个元素有 16 位二进位, 其中每位对应一个像素,“1”表示该像素“亮”,“0”表示该像素“暗”。数组 MAP 的各个元 素与屏幕上的像素相对应后,其位置可排列如下: MAP(0),MAP(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 右移 (2) 位,并存入变量 S; 4、计算 Y+S,存入变量 V,得到像素的位置所属的数组元素 MAP(V)。 第 2 步算出指定像素在 MAP(V)中所对应的位置 K(K=0,…,15)。这一步的具体实现过程如 下: 将变量 X 与二进制数 (3) 进行逻辑乘运算,并存入变量 K。 第 3 步根据用户要求将数组元素 MAP(V)左起第 K 位设置为”1”或”0”。这一步的具体实现 过程 , 如下: 1、为在指定像素置“亮”,应将 MAP(V)与 BIT(K)进行逻辑 (4) 运算,并存入 MAP(V)。 2、为在指定像素置“暗”, 应先将 BIT(K)各位取反,再将 MAP(V)与 BIT(K)进行逻辑 (5) 运算,并存入 MAP(V)。
试题二 阅读下列函数说明和 C 代码,将应填入—匹 l 处的字句写在答题纸的对应栏内。 [函数 2.1 说明] 函数 strcat(char *si,char *s2)是将字符串 s2 连接在字符串 si 之后,构成一个 首指 针为 s1 的字符串。 [函数 2.1] void strcat(char *sl,char *s2) { while(*s1!='\0') ; (1) : for( ; (2) ;s1++,s2++); } [函数 2.2 说明] . 本函数输入 n(<1000)个整数到指定数组,求该数组中最大元素的值和此元素的下标, 最大元素值以函数值返回,此元素的下标通过指针形参带回调用处。 [函数 2.2] #include #define MAXLINE int maxindex(int a[],int *index) { 1000 int i,n; do { printf("Please input n\n"); scanf("%d",&n); }while( (3) for(i=0 ; i
试题三 阅读下列函数说明和 C 代码,将应填入(n)处的字句写在答题纸的对应栏内。 [函数 3.1 说明] 函数 insert_sort(int a[],int count)是用直接插入排序法对指定数组的前 count 个 元素从小到大排序。 直接插入排序法的基本思想是:将整个数组(count 个元素)看成是由有序的(a[0],…, a[i-1])和无序的(a[i],…,a[Count-1))两个部分组成;初始时 i 等于 1,每趟排序时将 无序部分中的第一个元素 a[i]插入到有序部分中的恰当位置,共需进行 count-1 趟,最终 使整个数组有序。 [函数 3.1] void insert_sort(int a[] , int count) { int i, j, t; for(i=1 ; i=0 && t
试题四 阅读下列程序说明和 C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 [程序 4 说明] 本程序用古典的 Eratosthenes 的筛法求从 2 起到指定范围内的素数。如果要找出 2 至 10 中的素数,开始时筛中有 2 到 10 的数,然后取走筛中的最小的数 2,宣布它是素数,并 把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数 3、5、7、9:重复上述步 骤,再取走最小数 3,宣布它为素数,并取走 3 的倍数,于是留下 5、7。反复重复上述步骤, 直至筛中为空时,工作结束,求得 2 至 10 中的全部素数。 程序中用数组 sieve 表示筛子,数组元素 sieve[i]的值为 1 时,表示数 i 在筛子中,值为 -1 时表示数 i 已被取走。 [程序 4] #include #define MAX 22500 main() { /*range 指出在多大的范围内寻找素数 */ unsigned int i , range , factor , k ; int sieve[MAX] ; printf(“please input the range : ”); scanf(“%d”,&range); for (i=2 ; i<=range ; i++) /* 筛子初始化 */ (1) ; factor=2 ; while (factor<=range) { if ( (2) ) { /*筛子最小数是素数 */ printf(“%d\t”,factor); k=factor; while (k<=range) { /*移走素数的倍数 */ (3) ; /*筛中的个数减一 */ k= (4) ; } } (5) ; }
试题五 阅读下列函数说明和 C 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 设二叉树的结点数据类型为: typedef struct node{ char data; struct node *left; struct node *right: }BTREE; [函数 5.1 说明] 函数 void SortTreelnsert(BTREE **tree,BTREE*s)采用递归方法,将结点 s 插入以 *tree 为根结点指针的二叉排序树(二叉查找树)中。 [函数 5.1) void SortTreelnsert(BTREE **tree,BTREE *S) { if(*tree = = NULL) *tree=S; else if(S->data<(*tree)->data) SortTreelnsert( (1) ,S); else if(S->data>(*tree)->data) SortTreelnsert( (2) ,S); } [函数 5.2 说明] 函数 void TraversalTree(BTREE *tree)用非递归方法,对以 tree 为根结点指针的二 叉树进行后序遍历。 [函数 5,2] void TraversalTree(BTREE *tree) { BTREE *stack[1000],*p; int tag[1000],top=0; p=tree; do { while(p!=NULL){ stack[++top]=p; (3) ; tag[hop]=0; /*标志栈顶结点的左子树已进行过后序遍历*/ : } while(top>0 && (4) ){ /* 栈顶结点的右子树是否被后序遍历过*/ p=stack[top--]; putchar(p->data); /*对栈顶结点的右子树进行后序遍历*/ } if (top>0) { (5) ; tag[top]=1; } }while(top>0); }
试题一 (1) 3 (2) 4 (3) 1111 (4) 或(加) (5) 与(乘) 试题三 (1) i-1 (2) a[j+1] = a[j] (3) a[j+1] = t (4) k > 1 (5) a+1 , k-2 试题五 (1) &((*tree) -> left) (2) &((*tree) -> right) 参考答案 试题二 (1) s1++ (2) *s1= *s2 (3) n<=0 ? ? n>=MAXLINE (4) a[i] > a[*index] (5) a[*index] 试题四 (1) sieve[i] = 1 (2) sieve[factor] == 1 或 sieve[factor] > 0 或 0 或 sieve[factor] != -1 sieve[factor] >= (3) sieve[k] = -1 (4) k+factor (5) factor++ (4)tag[top] tag[top] != 0 == 1 或 tag[top] 或 (3) p = p -> left 或 p = stack[top] -> left (5) p = stack[ top ] -> right
分享到:
收藏