[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷23及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷23及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷23及答案与解析.doc(22页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 23 及答案与解析 1 阅读以下标准书号校验码的技术说明和程序流程图,根据要求回答问题 1至问题3。 说明 为实现图书的国际统一编码,便于实现计算机化的图书管理,每本正式出版的图书都印有国际标准书号。标准书号由 “ISBN”、 10个数字 (0-9)组成,其格式如下。 ISBN 组号 -出版者号 -书名号 -校验码 其中,校验码是根据前面 9个数字计算得到的,用于计算机自动校验。假设标准书号的 10个数字依次是 a(1),a(2), , a(10),则校验码 a(10)的设置应 使 S=1O*a(1)+9*a(2)+8*a(3)+1*a(10
2、)能被 11整除。如果校验码 a(10)应设置成 10,则规定以 “X”表示之。 例如,软件设计师考试考前冲刺预测卷及考点解析的标准书号为: ISBN 7-121-05027-5。第1段上的数字 “7”是国际 ISBN中心分配给中国 ISBN中心管理的组号;第 2段上的“121”表示电子工业出版社。标准书号的校验过程如图 3-16所示,计算校验码的过程如图 3-17所示。其中, Mod(S,11)表示 S除以 11得到的余数。1 请根据标准书号校验码的说明 ,将图 3-16和图 3-17程序流程图中 (1)-(4)空缺处的内容填补完整。 2 图 3-16(或图 3-17)中 Mod(S, 11
3、)表示 S除以 11得到的余数。以下 C程序 实现不使用求余计算符号 “%”,求取被除数 p和除数 q之间的余数。 C程序 static int fun(int p, int q) int x=0; while (x =p) if (x = p) return 0; (5) return (6) 3 假设应试捷径 典型考题解析与考点贯通 (系统分析师考试 )书籍标准书号前9个数字为 7-121-04715,请写出其对应的校验码。 4 阅读以下技术说明和 C代码,将 C程序中 (1) (5)空缺处的内容填写完整。 说明 某种传感器的输出值 Ratio依赖于环境温度 temp(-40 temp50
4、 )。对一组环境温度值 (ITEMS个 ),已经测量得到了相应的 Ratio值 (如表 4-10表格所示 )。表 4-10粗略地描述了曲线 Ratio(temp)。校正系数 K是Ratio的倒数,因此也依赖于环境温度 temp。在数据处理中,需要用更多的列表值细致地描述曲线 K(temp),如表 4-11所示。在表 4-11中,各温度值所对应的 K值是对表 4-10进行线性插值再求倒数得到的,具体的计算方法如下。 1) 根据 temp值,在表 4-10中用二分法查找; 2) 若找到相应的温度值,则按相应的 Ratio值求倒数得到 K值; 3) 若没找到相应的温度值,则可确定 temp所在的温度
5、区间 Tp1,Tp2,同时获得了相应的 Ratio1和 Ratio2,再按如下公式计算K值: 在程序中,当 temp高于 50 或低于 -40 C时,设定 K=0。 C程序 #include typedef struct int Temp; /* 环境温度 */ double Ratio; /* 传感器的输出值 */ CURVE; #define ITEMS 7 double GetK(int Temp,CURVE *p,int n) /* 用二分法在 n个元素的有序表 p中查找与 Temp对应的传感器输出值 */ int low, high, m; double Step; low = 0;
6、 high = n-1; if (Temp p-Temp) | (Temp (p+high)- Temp) return 0.0; /* 超出温度范围时返回 0.0 */ while (low =high) m=(1); if (Temp=(p+m)- Temp) return (2); if (Temp (p+m) Temp) high=m-1; else low=(3); p+=high; Step=( (4) )/(p+1)- Temp-p- Temp); return 1.0/ (p- Ratio + Step*( (5) ) ; void main() int Degree; dou
7、ble k; CURVE Curve ITEMS=-40,0.2,-20,0.60.,-10,0.8,0,1.0,10,1.17,30,1.50,50,1.8; printf (“环境温度 校正系数 n“); for (Degree=-40;Degree =50;Degree+) k=GetK ( Degree, Curve, ITEMS); printf(“%3d %4.2fn“,Degree,k); 5 阅读以下应用程序说明和 C程序,将 C程序段中 (1) (7)空缺处的语句填写完整。 说明 以下 C程序 是对某电码明文 (原文 )进行加密形成密文。其加密算法如下。 假定原文为 C1C2
8、C3Cn ,加密后形成的密文为 S1S2S3Sn 其中 n为小于 256的任意自然数。首先读入正整数 Key(Key 1)作为加密钥匙,并将密文字符位置按顺时针方向连成一个环,如图 4-12所示。 图 4-12 密文字符环示意图 加密时从 S1位置起顺时针计数,当数到第 Key个字符位置时,将原文中的字符放入该密文字符位置中,同时从环中除去该字符位置;接着从环中下一个字符位置起继续计数,当再次数到第 Key个字符位置时,将原文中字符 C2放入其中,并从环中除去该字符位置;依此类推,直至 n个原文字符全部放入密文环中。由此产生的S1S2Sn 即为原文的密文。 例如,原文: One World O
9、ne Dream。当 Key=5时,其密文为: me OnWlanD oOedrer;当 Key=6时该原文的密文为: oeDn OedrrOn Wma le。 程序使用示例如图 4-13所示。 图 4-13 程序使用示例 在 C程序 中,将电码的原文存入字符数组 old,加密钥匙存入在整数变量 Key中。函数decode用于将原文 old加密并返回密文字符数组的首指针。其中,函数采用一个双向循环链表 CODE来表示密文环。函数 strlen用于计算一个字符串中个数 (不包括字符串结尾符 0)。为了简单起见,程序中假设内存容量足以满足动态存贮单元分配的要求。 C程序 #include stdi
10、o.h #include alloc.h #define CR 13 typedef struct node char ch; struct node *forward; /* Link to next node. */ struct node *backward; /* Link to previous node.*/ CODE; main() char (1), old256; int strlen () , key , num=0; printf(“n Please input the telegraph:n“) while (num 255 old (2) = 0; do printf
11、(“n Please input Key=?(Key 1):“); scanf (“%d“, while (key =1); printf(“n The decode of telegraph: %s is:n %sn“, old, decode (old, key); char *decode(old, key); char *old; int key; char *new; int length, count, i; CODE *loop,*p; length=strlen (old); loop=( (3) ) malloc (length*sizeof (CODE); for (i =
12、 1;i length-1;i+) loopi.forward = loopi.backward = loop0.backward = loop0.forward = looplength-1.forward = loop; looplength-1.backward = for (p = loop, i = 0;i length; i+) for (count = 1;count key; count+) p=(4); p- ch=*old+; p-backward- forward =(5); p- forward- backward =(6); p=p- forward; new = (
13、char *) malloc(length+1 *sizeof(char); for (i=0;i length; i+) newi = loopi.ch; newlength=0; return (new) int strlen(s) char *s; int len = 0; while (7) !=0) len+; return( len ); 6 阅读以下函数说明和 C代码,将 C程序中 (1) (5)空缺处的语句填写完整。 说明 函数 int Toplogical (LinkedWDigraph G)的功能是对图 G中的顶点进行拓扑排序,并返回关键路径的长度。其中,图 G表示一个具有
14、 n个顶点的 AOE-网,图中顶点从 1 n依次编号,图 G的存储结构采用邻接表表示,其数据类型定义如下。 typedef struct Gnode /* 邻接表的表节点类型 */ int adjvex; /* 邻接顶点编号 */ int weight; /* 弧上的权值 */ struct Gonde*nextare; /* 指示下一个弧的节点 */ Gnode; typedef struct Adjlist /* 邻接表的头节点类型 */ char vdata; /* 顶点的数据信息 */ struct Gnode*Firstadj; /* 指向邻接表的第一个表节点 */ Adjlist;
15、 typedef struct LinkedWDigraph /* 图的类型 */ struct Adjlist head; /* 指向图中第一个顶点的邻接表的头节点 */ LinkedWDigraph; 例如,某 AOE-网如图 4-14所示,其邻接表存储结构如图 4-15所 示。 函数 int Toplogical(LinkedWDigraph G) Gnode *p; int j, w, top=0; int Stack,*ve, *indegree; ve=(int *)mallloc(G.n+1)*sizeof(int); indegree=(int*)malloc(G.n+1)*s
16、izeof(int); /* 存储网中个顶点的入度 */ Stack=(int*)malloc(G.n+1)*sizeof(int); /* 存储入度为 0的顶点的编号 */ if(!ve | !indegree |!Stack) exit(0); for(j=1;j =G.n;j+) ve j=0; indegreej=0; /* for */ for (j=1;j =G.n; j+) /* 求网中各顶点的入度 */ p=G.headj.Firstadj; while (p) (1); p=p- nextarc; /* while */ /* for */ for (j=1; j=G.n;
17、j+) /* 求网中入度为 0的顶点并保存 其编号 */ if (!indegreej) Stack+top=j; while (top O) w=(2); printf(“%c“, G.headw.vdata); p=G.headw.Firstadj; while (p) (3); if (!indegreep- adjvex) Stack+top=p- adjvex; if ( (4) ) Vep-adjvex=vew+p- weight; P=p- nextarc; /* while */ /* while */ return (5); /* Toplogical */ 7 阅读以下应用
18、说明及 Visual Basic部分程序代码,将应填入 (n)处的字句写在对应栏内。 【说明】 该应用程序是用来求一元二次方程和一元一次方程的,其运行如图 2所示。 当用户在对应方程系数的文本框(txt1、 txt2和 txt3)中输入数值后,单击 “解方程 ”按钮 (cmdcalculate),解方程并将解显示在 和 K2对应的文本框中 (txt4和 txt5)中。若是一个一元一次方程,只显示在X1对应的文本框中,若无解 则弹出对话框。下面的代码是 “解方程 ”按钮的 Click事件的代码。 【程序代码】 Private Sub (1) () a=Val(Txt1.Text):b=Val(T
19、xt2.Text);c=Val(Txt3.Text) If a =0 Then If b = 0 Then MsgBox“方程无解 !“,vbOKOnly,“提示 “ Txt4.Text=“ “ Txt5.Text=“ “ Else Txt4.Text=(2) Txt5.Text=“ “ End If Else delta=(3) If (4) Then MsgBox“方程无解 !“,vbOKOnly,“提示 “ Txt4.Text=“ “ Txt5.Text=“ “ Else Txt4.Text=Str $ (-1) * b + Sqr(delta)/(2 * a) Txt5.Text=(5
20、) End If End If End Sub 8 阅读以下应用说明及 Visual Basic程序代码,将应填入 (n)处的字句写在对应栏内。 【说明 8.1】 以下程序的功能是:生成 20个 200 300之间的随机整数,输出其中能被 5整除的数并求 出它们的和。 【程序代码 8.1】 Private Sub Command1_Click() For i=1 To 20 x=Int(1)*200+100) If (2)=0 Then Print x S=S+ (3) End If Next i Print“Sum=“;S End Sub 【说明 8.2】 程序 8.2运行后,单击窗体,则在
21、窗体上显示的内容是: a=(4)和 b=(5)。 【程序代码 8.2】 Private Sub Form_Click() Dim a As Integer,b As Integer a=20:b=50 p1 a,b p2 a,b p3 a,b Print“a=“;a,“b=“;b End Sub Sub p1(x As Integer, ByValy As Integer) x=x+l0 y=y+20 End Sub Sub p2(ByValAs Integer, y As Integer) x=x+l0 y=y+20 End Sub Sub p3(ByValAs Integer, ByVal
22、 y As Integer) x=x+10 y=y+20 End Sub 9 阅读以下关于某绘图系统的技术说明、部分 UML类图及 C+程序,将 C+程序中 (1) (6)空缺处的语句填写完整。 【说明】 某绘图系统存在 Point、 Line和Square这三种图元,它们具有 Shape接口,图元的类图关系如图 5-10所示。 现要将 Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供 XCircle类,且完全满足系统新增的 Circle图元所需的功能,但 XCircle不是由 Shape派生而来,它提供了的接口不被系统直接使用。【 C+代码 5-1】既使用了 XCircl
23、e又遵循了 Shape规定的接口,即避免了从头开发一个新的 Circle类,又可以不修改绘图系统中已经定义 的接口。【 C+代码 5-2】根据用户指定的参数生成特定的图元实例,并对它进行显示操作。 该绘图系统定义的接口与 XCircle提供的显示接口及其功能如表 5-13所示。 【 C+代码 5-1】 class Circle: public (1) Private; (2) m_circle; Public; void display() m_circle. (3) ; 【 C+代码 5-2】 class Factory public; (4) getShapeInstance(int ty
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 23 答案 解析 DOC
