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