[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷14及答案与解析.doc

上传人:花仙子 文档编号:507358 上传时间:2018-11-29 格式:DOC 页数:10 大小:172.50KB
下载 相关 举报
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷14及答案与解析.doc_第1页
第1页 / 共10页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷14及答案与解析.doc_第2页
第2页 / 共10页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷14及答案与解析.doc_第3页
第3页 / 共10页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷14及答案与解析.doc_第4页
第4页 / 共10页
[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷14及答案与解析.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 14及答案与解析 1 阅读以下说明和流程图,回答问题 1 2,将解答填入答题纸对应的解答栏内。说明 给定一个十进制整数 A,将其转换为 R进制数的方法是:将 A的整数部分逐次除以 R,直到商等于 0为止,将所得的余数由低位到高位排列在一起,就得到了对应 R的进制数。以 A=11, R=2为例, 112=51 , 52=21 , 22=10 ,12=01 中各式的余数依次为: 1, 1, 0, 1,于是与 A对应的二进制数为 1011。 下面的流程图实现了将十进制数 2597转换为八 进制数的功能,其中: (1)循环 1执行除法运算并将余数依次

2、记录在数组 a中 (假定数组长度足够长 ),如 a1, a2, , ak; (2)循环 2则用于将这些余数按逆序输出,即 ak, ak-1, , a1; (3)图中 i,j分别是循环 1和循环 2中的循环变量; (4)图中 q用于记录每次除法所得的商值。 流程图 问题 1 将流程图中的 (1) (4)处补充完整,其中 (1) (3)处要求使用 C语言格式书写: (1)处为逻辑表达式, (2)、 (3)两处为算术表达式; (4)则须按照 “循环变量名:循环初值 ,循环终值,增量 ”格式描述。 问题 2该算法运行的结果 (5)。 2 阅读下列程序说明和 c代码,将应填入 (n)处的字句写在对应栏内

3、。 说明 下面的程序利用递归算法计算 x和 y的最大公约数。 函数 2.1 main ( ) int x,y,k,t; scanf(“ % d% d“ , if(x y) t=x;x=y; y=t; (1); while(k! =0) y=x; (2); k=y%x; prinff( “% d“ ,x); 函数 2.2说明 函数 fun(char *str,char *substr的功能是计算子串 sugbstr在串 str中出现的次数。 函数 2.2 fun(ehar * str, char * substr) int x,y,z; (3); for(x=0;str x ! = O;x +

4、+ ) for(y=x,z=0;sabstrz = =stry;(4),y+ +) if(5)= =0) num + +; break; return(num); 3 阅读下列函数说明和 C函数,将应填入 (n)处的字句写在对应栏内。 说明 用链式存储结构实现的栈称为链栈。若链栈元素的数据类型为 datatype,以LinkStack记链栈结构,其类型定义为: typedef struct node datatype data; stmct node * next; StackNode, * LinkStack; 由于栈的主要操 作都是在栈顶进行的,因此我们把链表的头部作为栈顶。设 top为栈

5、顶指针,即: LinkStack top。 下面各函数的功能说明如下: (1)LinkStack Init_LinkStack():建立并返回空的链栈; (2)int Empty_LinkStack(LinkStack top):判断 top所指链栈是否空; (3)LinkStack Push_LinkStack(LinkStacktop, datatypex):将数据 x压人 top所指链栈的栈顶,返回新栈指针; (4)LinkStack Pop_LinkStack (LinkStacktop, datatype*x):弹出 top所指链栈的栈顶元素 x,返回新栈指针。 函数 LinkSta

6、ek Init_LinkStack( ) returnNULL; int Empty_LinkStack ( LinkStaek top) if(top = = NULL) return 1; else return 0; LinkStaek Push_LinkStaek( LinkStaektop, datatype X) StaekNode *s; s=malloc (sizeof(StaekNode) ); (1)= x; (2)= top; (3); return top; LinkStaek Pop_LinkStack (LinkStacktop, datatype * x) Sta

7、ekNode *p; if(top = = NULL) return NULL; else * x =(4); p = top; (5); free (p); return top; 4 阅读下列函数说明和 C函数,回答问题 1 2,将解答填入栏内。 说明 若矩阵Amn中存在某个元素 aij满足: aij 是第 i行中最小值且是第 j列中的最大值,则称该元素为矩阵 A的一个鞍点。下面程序的功能是输出 A中所有鞍点,其中参数A使用二维数组表示, m和 n分别是矩阵 A的行列数。 程序 void saddle (int A , int m, int n) int i,j,min; for (i=0

8、;i m;i + + ) min: (1); for (j=1; j n; j+ +) if(Aijmin) (2); for (j=0; j n; j+ +) if (3) p=0; while (p m if (p = m)printf (“%d,%d,%dn“,i,j,min); 问题 1 将函数代码中的 (1) (4)处补充完整 问题 2在上述代码的执行过程中,若 A为矩阵 ,则调用 saddle(A, 3, 3)后输出是 (5)。 5 阅读下列说明和 Visual Basic代码,将应填入 (n)处的字句写在对应栏内。 说明 某小型家电超市开 发了下面的程序,用以实现商品提货信息的汇

9、总和输出功能。程序的运行界面如下图所示: 程序界面包含两个控件数组,分别是提货商品复选框控件数组 Check1以及提货数量文本框控件数组Text1(相同下标的复选框和文本框相对应 ),提货清单的显示由 List控件实现,按钮 “打印清单 ”和 “清除 ”分别名为 Command1和 Command2。 Visual Basic代码 提货商品复选框的单击事件响应代码 Private Sub Check1_Click(Index As Integer)If Check1 (Index). Value = 1 Then (1). SetFocusEnd Sub按钮 “打印清单 ”的单击事件响应代码

10、Private Sub Command1_Click() Dim i, n, price As Integer, sum As Long, title As String sum = 0 For i = O To 4 Select Case i Case 0: title =“电视机 “: price = 3580 Case 1: title =“微波炉 “: price = 660 Case 2: title =“电冰箱 “: price = 1850 Case 3: title =“DVD“: price = 2880 Case 4: title =“空调 “: price = 2500

11、End Select If (2)= 1 And Textl(i). Text “ “ Then (3) title char pass7; public: User(char ,char); (1) return user; (2) return pass; ; User:User(char u,char p) strcpy(user,u); strcpy(pass,p); void main() User ua=User(“Li“,“123456“),User(“wang“,“654321“),User(“Song“,“666666“) char name10; while(1) cout

12、 “输入用户 名 :“; cin name; if(3)= =0) break; for(int i=0;i 3;i+ +) if(strcmp(name,uai.getuser() = =0) cout “密码 :“ uai.getpass() endl; (4); if(5)cout “该用户不存在 !“ endl; 8 阅读以下说明和 java代码,将应填入 (n)处的字句写在对应栏内。 说明 本程序中预设了若干个用户名和口令。用户输入正确的用户名后,可以查找对应的口令,一旦输入结束标记 “end”,程序结束。 Java代码 import java. io. *: public clas

13、s User public String user; public Siring pass; public User() public User( String u,String p) user=u; pass=p; public String (1) () return this. user; public String (2) () return this. pass; public static void main(String args) User ua=new User(“Li“,“123456“), new User(“wang“,“654321“), new User(“Song

14、“,“666666“); while(true) InputStreamReader reader = new InputStreamReader(System. in); BufferedReader inpul = new BnfferedReader(reader); System. out. print(“Enter your name:“); String name = null; try name = input. readLine(); catch (IOException ex) if(3) break; int i; for (i=0;i 3;i+) if (name. eq

15、uals(uai. getUser() System. out. println(“密码 :“+uai.getPass(); (4); if (5) System. out. println(“该用户不存在 !“); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 14答案与解析 1 【正确答案】 问题 1(1)q 0 (2)q/R (3)q%R (4)j:i-1,1, -1 问题 2(5)5045 【试题解析】 (1) (3)根据流程图的说明可知:仅当除 R所得的商大于零时 (即q0),循环 1会被重复执行;并且循环 1的循环体中对 q进行一次除法运算,因此商等于 q/R,余数 ai=q

16、 R; (4)在开始执行循环 2时, i的值是余数的个数加上 1,因此,在以 j为循环变量逆序输出数组 s中有意义的那部分值,应以数组下标 i-1为循环初值,以数组下标 1为循环终值,以 1为增量; (5)由于 25978=3245 , 3248=404 , 408= 50 , 5+8=05 ,因此算法运行结果为 5045。 2 【正确答案】 (1)k=y x (2)x=k (3)int num=0 (4)z+ (5)substrz+1 【试题解析】 (1) (2)使用递归算法计算 x和 y的最 大公约数时,不妨令 yx,如果 y除 x余数得。则 x即为所求;否则令 yx , x 余数,继续上

17、述判断。 (3)此处应声明变量 num并初始化; (4)次循环的功能是从 str的第 y个位置起与 substr做比较,循环过程中 y和 z应同时增 1; (5)若上面的循环重复执行,直到到达 substr结束,则表示 substr在 str中出现一次。 3 【正确答案】 (1)s- data (2)s- next (3)top=s (4)top- data (5)top=top- next 【试题解析】 (1) (3): LinkStack Push_LinkStack(Link- Stacktop, datmype x)函数的功能是将 x压入栈顶,因此首先为其创建一个节点 s,使 s- d

18、ata等于 x,使 s- next指向原来的栈顶 top,最后将,作为新栈的栈顶并返回。 (4) (5): LinkStack Pop_LinkStaek(LinkStacktop, datatype*x)的功能是弹出原栈顶元素,返回这个元素以及新栈的指针。当原链栈不空时,取出栈顶元素 top - data赋给参量 *x作为返回值,将 top- next更新为 新栈的栈顶,并且释放原来top节点的空间。 4 【正确答案】 问题 1(1)Ai0 (2)min=Aij (3)Ai j=min (4)Apj =min或 min=AP j 问题 2(5)1, 2, 11 【试题解析】 本算法的基本思想

19、是:对矩阵 A逐行处理,求出每一行的最小值,对于这一行上等于最小值的那些元素,逐个判断该元素是否是所在列的最大元,如果是则打印输出。 (1)由上下文可知 min代表第 i行的最小值,此处应对其赋初值:本行第一个元素; (2)遍 历第 i行后面的元素,若有元素比 miu小,则应更新 min的值; (3)此处应挑出本行中取最小值的元素进行判断; (4)此循环用于判断 min是否是本列的最大元。 (5)所给矩阵中只有一个鞍点 11,若行列号从。开始计,它位于第 l行第 2列。 5 【正确答案】 (1) Teat1(Index) (2) Check1(i). Value (3) List1.AddIt

20、em (4) sum+Val(Text1(i) * price (5) List1.Clear 【试题解析】 (1)当用户选择某种商品 后,焦点应落在对应的数量文本框内; (2)for循环遍历所有商品,如果商品被选中并且数量不空,则进行累计; (3)向 List控件对象中添加内容应使用 AddItem方法; (4)累加总金额; (5)清除 List控件对象中的内容应使用 Clear方法。 6 【正确答案】 (1) FileSystemObject (2) Drivel.Drive (3) LoadPic ture(filename) (4) file.Copy path (5) file.De

21、lete 【试题解析】 (1)程序中需 要用到 FSO对象 fso,这里是 fso的变量声明; (2)DriveListBox控件对象的 Drive属性指定了当前的驱动器; (3)为 Image控件对象装载图片时应调用 LoadPicture方法,其参数是图片文件的完整路径; (4)复制文件应调用文件对象的 Copy方法; (5)删除文件应调用文件对象的 Delete方法。 7 【正确答案】 (1) char *getuser() (2) char *getpass() (3) strcmp(name, “end“) (4) break (5) i= =3或 i =3或 i 2或其他等效形式

22、【试题解析】 由上下文可知, User类中包括数据成员 User和 pass,分别存储用户名和口令,另有一个构造函数和 getuser()、 getpass()两个成员函数,分别用于获取用户名和口令。 main()中包含一个 User类型的数组 ua,当用户输入一个用户名后,在 ua中查找,若找得到则输出对应的口令,否则输出相应的提示信息。 (1) (2)由于 user和 pass属性都是字符串类型,这里的返回值类型为 char *; (3)此处给出了退出程序的判断条件,即输入的用户名等于 “end”; (4)此处的 for循环用于查找用户名,若找到了可即刻退出循环; (5)当输入的用户名不正

23、确时, for循环一直执行直到 i等于 3。 8 【正确答案】 (1) getUser (2) getPass (3) name.equals(“end“) (4) break (5) i= =3或i =3或 i 2或其他等效形式 【试题解析】 User类中包括数据成员 User和 pass,分别存储用户名和口令,另有一个构造函数和 getUser()、 getPass()两个成员函数,分别用于获取用户名 和口令。 main ()中包含一个 User类型的数组 ua当用户输入一个用户名后,在 ua中查找,若找得到则输出对应的口令,否则输出相应的提示信息。 (1) (2)从后面的代码中可以推断出, User类中有 getUser()、 getPass()两个成员函数; (3)此处给出了退出程序的判断条件,即输入的用户名等于 “end”; (4)此处的 for循环用于查找用户名,若找到了可即刻退出循环。 (5)此处是判断用户是否存在的条件,如果正常结束 for循环,则说明没用找到用户。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1