【计算机类职业资格】初级程序员下午试题-41及答案解析.doc
《【计算机类职业资格】初级程序员下午试题-41及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】初级程序员下午试题-41及答案解析.doc(13页珍藏版)》请在麦多课文档分享上搜索。
1、初级程序员下午试题-41 及答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【算法说明】为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为 X 轴,垂直向下方向设为 Y 轴。设某种显示器的像素为 128128,即在每条水平线和每条垂直线上都有 128 个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中 x 和 y 都是整数,0x127, 0y127。现用一维数组 MAP 来存储整个一屏显示的位图信息。数组的每个元素有 16 位二进位,其中每位对应一个像素,“1”表示该像素“亮”
2、,“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)的值为 215-k。【算法】第 1 步 根据用户指定像素的位置坐标(x,y),
3、算出该像素的位置所属的数组元素 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)与 BI
4、T(K)进行逻辑 (4) 运算,并存入 MAP(V)。2为把指定像素置“暗”,应先将 BIT(K)各位取反,再将 MAP(V)与 BIT(K)进行逻辑 (5) 运算,并存入MAP(V)。(分数:15.00)_二、试题二(总题数:1,分数:15.00)2.【函数 2.1 说明】函数 palindrome(char s)的功能是,判断字符串 s 是否为回文字符串,若是,则返回 0,否则返回-1。若一个字符串顺读和倒读都一样时,称该字符串是回文字符串,例如:“LEVEL”是回文字符串,而“LEVAL”不是。【函数 2.1】int palindrome( char s )char * pi, * pj
5、;pi=s; pj=s+strlen(s)-1;while( pipjpj -if( (2) )return -1;else return 0;【函数 2.2 说明】函数 f(char * str,char del)的功能是:将非空字符串 str 分割成若干个子字符串并输出,del 表示分割时的标志字符。例如若 str 的值为“33123333435”,del 的值为“3”,调用此函数后,将输出 3 个子字符串,分别为“12”、“4”和“5”。 【函数 2.2】void f( char * str, char del)int i ,j ,len;len = strlen (str)i=0;wh
6、ile(i len) while( (3) )i+; /*忽略连续的标志字符*/*寻找从 stri开始直到标志字符出现的一个子字符串*/j=i+1;while(strj != del /*给找到的字符序列置字符串结束标志*/printf(“%s/t“,(5) ;(分数:15.00)_三、试题三(总题数:1,分数:15.00)3.【说明】设有一个带表头结点的双向循环链表 L,每个结点有 4 个数据成员:指向前驱结点的指针 prior、指向后继结点的指针 next、存放数据的成员 data 和访问频度 freq。所有结点的 freq 初始时都为 0。每当在链表上进行一次 L.Locate(x)操作
7、时,令元素值 x 的结点的访问频度 freq 加 1,并将该结点前移,链接到现它的访问频度相等的结点后面,使得链表中所有结点保持按访问频度递减的顺序排列,以使频繁访问的结点总是靠近表头。【函数】void Locate( int while(p!=fristif(p! =first) /*链表中存在 x*/(2) ;结点类型说明* current = P; /*从链表中摘下这个结点*/Current - prior - next = current - next;Current - next - prior = current - prior;P = current - prior; /*寻找重
8、新插入的位置*/While(p! =first Current- next = (4) ; /*插入在 P 之后*?Current - prior = P;P - next - prior = current;P-next= (5) ;else printf(“Sorry. Not find! /n“); /*没找到*/(分数:15.00)_四、试题四(总题数:1,分数:15.00)4.【说明】函数 QuickSort 是在一维数组 An上进行快速排序的递归算法。【函数】void QuickSort( int A ,int s,int t)int i=s,j=t+1,temp;int x=As
9、;dodo i + ;while (1) ;do j - ;while(Ajx);if(ij)temp=Ai; (2) ; (3) ;while(ij);Aa =Aj;Aj =x;if(si-1) (4) ;if(j+1t) (5) ;(分数:15.00)_五、试题五(总题数:1,分数:15.00)5.【程序说明】函数 int commstr(char * str1,char * str2,int * sublen)从两已知字符串 str1 和 str2 中,找出它们的所有最长的公共子串。如果最长公共子串不止 1 个,函数将把它们全部找出并输出。约定空串不作为公共子串。函数将最长公共子串的长度
10、送入由参数 sublen 所指的变量中,并返回字符串 str1 和 str2 的最长公共子串的个数。如果字符串 str1 和 str2 没有公共子串,约定最长公共子串的个数和最长公共子串的长度均为0。【程序】int strlen(char * s)char *t=s;while( * +);return t-s-1;int commstr(char) *str1,char *str2,int *sublenchar*s1, *s2;int count=0,len1 ,len2,k,j,i,p;len1:=strlen(str1)len2 = strlen(str2);if(len1len2)s
11、1=str1 ;s2=str2;else len2 = len1;s1 = str2;s2 = str1;for(j=len2;j0;j-) /*从可能最长子串开始寻找*/for(k=0; (1) :len2;k+) /*k 为子串 s2 的开始位置*/for(i=0;s1 (2) !=/0;i+;) /*i 为子串 s1 的开始位置*/*s1 的子串与 s2 的子串比较*/for (p=0;pj)p+);if ( (4) ) /*如果两子串相同*/for(p=0);pj;p+ /*输出子串*/printf (“%c“,s2k+p);printf (“/n“);count+;/*计数增 1 *
12、/if (count0) break;*sublen=(count0)? (5) :0;return count;(分数:15.00)_六、试题六(总题数:1,分数:15.00)6.【说明】下面是一个 Applet 程序,其功能是输出已定义好的两个变量 x 和 chr。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。import java. awt.*;(1) (2) int x=10;(3) Label output1;Label output2;(4) output1 = new Label(“定义 int 类型变量“+“x,的初值为“
13、+x);output2 = new Label(“定义 char 类型变量“+“chr,的初值为“+chr);add(output1);add(output2);HTMLHEADTITLE ex34_3 /TITLE/HEADBODY(5) width=400 height=400/applet/BODY/HTML(分数:15.00)_七、试题七(总题数:1,分数:15.00)7.【说明】已知窗体上有两个名为 cmdGene 和 cmdSort 的命令按钮。单击 cmdCene 按钮时,随机产生 10 个1,100范围内的整数并将它们放在数组 intA 中;单击 cmdSort 按钮时,用选择
14、法排序这 10 个数并输出。【程序代码】Dim intA(1 To 10)As integerPrivate Sub cmdGene_Click( )Dim intl As IntegerRandomizeFor intl = 1 To 10intA(intl) = (1) Next intlEnd SubPrivate Sub cmdSort_Click( )Dim intl, intJ,intMin, intTemp As IntegerFor intl = 1 To 9intMin = intA(intl)For intJ= (2) To 10If intA(intJ) intMin T
15、henTemp = intA(intJ)intA(intJ)= (3) intMin = intTempEnd IfNext intJ(4) (5) For intl = 1 To 10Print Str(intA(intl)+“ “;Next intlNext lntlPrintEnd Sub(分数:15.00)_八、试题八(总题数:1,分数:15.00)8.【说明】源程序文件 vectorClass.cpp,其中定义了用于表示向量的类 vector,但类 vector 的定义并不完整。请按要求完成下列操作,将类 vector 的定义补充完整,并给出输出结果。1补充类 vector 的构造函
16、数,该函数有参数 x 和 y,它们都是 int 型的数据,默认值都为 0。请使用参数列表的形式分别将类的数据成员 a 和 b 分别初始化为参数 x 和 y 的值。2完成类 vector 的成员函数 input(int x,int y)的定义,将 int 型的参数 x 和 y 分别赋值给数据成员b 和 a。3完成类 vector 的友元函数 friend double Multiply(vector int b;public:vector( (1) ): (2) void input(int x, int y)(3) void output( )cout(a,b“)“ endl;friend d
17、ouble Multiply(vector ;double Multiply(vector (4) return c;void main( )vector x(10,20),y;double d;y. input(2,3)d=Multiply(x,y);coutdendl;程序输出结果是: (5) 。(分数:15.00)_初级程序员下午试题-41 答案解析(总分:120.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)1.【算法说明】为便于描述屏幕上每个像素的位置,在屏幕上建立平面直角坐标系。屏幕左上角的像素设为原点,水平向右方向设为 X 轴,垂直向下方向设为 Y 轴。设
18、某种显示器的像素为 128128,即在每条水平线和每条垂直线上都有 128 个像素。这样,屏幕上的每个像素可用坐标(x,y)来描述其位置,其中 x 和 y 都是整数,0x127, 0y127。现用一维数组 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)上
19、的像素置为“亮”或“暗”。在该算法中,变量 X,Y,V,S,K 都是 16 位无符号的二进制整数。数组 BIT 中的每个元素 BIT(K)(K=0,15)的值是左起第 K 位为 1,其余位均为 0 的 16 位无符号二进制整数,即 BIT(K)的值为 215-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)。第
20、 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)。(分数:15.00)_正确答案:(1)3 (2)4 (3)1111 (4)或(加) (5)与
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 初级 程序员 下午 试题 41 答案 解析 DOC
