[计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷11及答案与解析.doc

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

1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 11及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列算法说明和流程图 1,回答问题 1至问题 3。 算法说明 某旅馆共有 N间客房。每间客房的房间号、房间等级、床位数以及占用状态分别存放在数组ROOM、 RANK、 NBED和 STATUS中。房间等级值为 1、 2或 3。房间的状态值为 0(空闲 )或 1(占用 )。客房是以房间 (不是床位 )为单位出租的。 本算法根据几个散客的要求预订一间空房。程序的输人为:人数 M,房间等级要求 R(R =0表示任意等 级都可以 )。程序的输出为:所有可供选择的房间号。

2、流程图 1描述了该算法。1 假设当前该旅馆各个房间的情况见表 3。当输入M=4, R=0时,该算法的输出是什么 ? 2 如果等级为 r的房间每人每天的住宿费为 RATE(r), RATE为数组。为使该算法在输出每个候选的房间号 RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),流程图 1的 p所指框中的最后处应增加什么处理 ? 3 如果限制该算法最多输出 K个可供选择的房间号,则在流程图 1的。所指的判断框应改成什么处理 ? 4 对文法 CS: Sa , | |(T); TT , S|S;回答问题 1问题 3。4 对文法 G进行改写,然后对每个非终结符写出不带回溯的递归于程序

3、。 5 经改写后的文法是否是 LL(1)的 ?指出它的预测分析表中 (1) (3)处的内容。 6 说明输入串 (a, a)#是否为 G的句子。 7 对于教学数据库的三个基本表 S(S#, SNAME, AGE, SEX), SLLS#, C#,GRADE), C(C#, CNAME, TEACHER)。现根据查询条件填充下面 SQL语句空白的部分。 1检索 LIU老师所授课程的课程号和课程名。 2检索至少选修 LIU老师所授课程中一门课程的女学生姓名。 3检索 WANG同学不学的课程的课程名。 4检索全部学生都选修的课程的课程号与课程名。 5检索选修课程包含 LIU老师所授课程的学生学号。 说

4、明 1 SELECT (1) FROM C WHERE TEACHER=LIU 2. SELECT S. SNAME FROM S,SC WHERE S.S#=SC.S#AND S. SEX=FAND SC.C#=(2) (SELECTC# FROM C WHERE TEACHER = LIU) 3. SELECT CNAME FROM C wHEREc# (3) (SELECTSC. C# FROM S,SCWHERE S.S#=SC.S#AND S. SNAME= WANG) 4. 由题知,该问题是在表 C中找课程号和课程名,要求这门课被全部学生所选。 SELECT C#,CNAME FR

5、OM C WHERE NOT EXISTS (SELECT * FRoM S WHERE NOT EXISTS (SELECT * FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE (4) 5. SELECT DISTINCT S# FROM SC WHERE (5) (SELECT C# FROM C WHERE TEACHER = LIU 8 请补充函数 fun(),该函数可以统计一个长度为 n的字符串在另 一个字符串中出现的次数。例如,假定输入的字符串为: asd ascasdfg asd as asd mlosd,子字符串为asd,则应输出

6、 4。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun()的横线上填人所编写的若干表达式或语句。 试题程序: #include stdio. h #include string. h #include conio. h int fun(char * str,char * substr) int n; char *p,*r; (1); while( * str) p = str; r = substr while( * r) if(2) r+; p+; else break; if(3) n+; str +; return n; main( ) ch

7、ar str81,substr3; int n; clrscr ( ); printf(“输入主字符串 :); gets(str); printf(输入子字符串 :“ ); gets( substr ); puts(str); puts(substr); n = fun(str,substr); printf(“n=%dn“,n) 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 9 阅读下列程序说明和 C代码,将应填人 (n)处的字句写在对应栏内。 程序 5说明 下列文法可用来描述化学分子式的书写规则

8、(例如, A12(CO3)3”Cu(OH)2): n () 其中: 是 个分子式; 或是一个元素,或是一个带括号的 (子 )分子式,元素或是一个大写字母 (记为 ),或是一个大写字母和一个小写字母 (记为 )或是一个,或是在 之后接上一个整数 n, n表示 有 n个 的元素或 (子 )分子式。 个完整的分子式由若干个 组成。 当然一个正确的分子式除符合上述文法规则外,还应满足分子式本身的语义要求。 下面的程序输入分子式,按上述文法分析分子式,并计算出该分子式的分子量。例如:元素 H的原子量是 1,元素 O的原子量是 16。输入分子式 H2O,程序计算出它的分子量为 18 (12+16)。程序中

9、各元素的名及它的原子量从文件 atom.dat中读入。 程序 5 #include stdio. h #include string. h #define MAXN 300 #define GMLEN 30 struct elem char name ; /* 元素名 */ double v;/*原子量 */ nTbl MAXN; char cmStr GMLEN, * pos; int c;FILE * fp; double factor( ); double atom( ) /* 处理文法符号 */ char w 3;int i; double num; while(c = * pos+)

10、 =|c =t); /*略过空白字符 */ if(c = n) return 0.0; if(c =A c= * pos + if(c =aelse pos-; w +i =0, for(i =0;nTbl i. v 0.0;i +) if(strcmp (w,nTbli. name) =0) return nTbl i. v; printf (“ n元素表中没有所输入的无素 : t%sn,w); retur n - 1.0; elseif (c = =() if(num=(1) 0.0)return -l.0; /*包括可能为空的情况 */ if( * pos + ! = ) printf

11、(“ 分子式中括号不匹配! /n“) ;return - 1.0; return num; printf (“分子式中存在非法字符 :t%cn“ ,c); return - 1.0; double mAtom( ) /* 处理文法符号 */ double num ;int n = ; if(num=(2) 0.0)return-l.0; c= *pos+; if(c =O while(c = 0 c= *poss +; pos -; return num * n; double factor( ) /*处理文法符号 */ double num =0.0,d; if( hum = mAtom (

12、 ) 0.0) return - 1.0; while( * pos = A (5); return num; void main( ) char fname =“atom. dst“; /*元素名及其原子量文件 */ int i;double num; if(fp=fopon(fname,“r“ ) = NULL) /*以读方式打开正文文件 */ prinff(“Can net open%s file. n ,fname) ;return /*程序非正常结束 */ i=0; while(i MAXN fclose(fp) ;nTbli. v =-1.0; while(1) /*输入分子式和计

13、算分子量循环,直至输入空行结束 */ printf(“ n 输入分子式 ! (空行结束 ) n“ ) ;gets(cmStr); pos = cmStr; if(cmStr0 = 0) break; if( (num = later( ) ) 0.0) if( * pos! = 0)printf(“分子式不完整 ! n“ ); else printf(“分子式的分子量为 %fn“,num); 10 阅读下列程序说明和 C+代码,将应填入 (n)处的字句写在对应栏内。 说明 定义私有数据成员 code、 english分别用于表示考生的编号、英语成绩,它们都是 int型的数据。 完成成员函数 v

14、oid Student:inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下: 输入编号: 英语成绩: 计算机成绩: 利用已实现的类 Student的成员函数,完成函数 void firstname(Student *A, int uum)的定义,该函数根据考生信息 A,输出 num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。 源程序文件 test1.cpp清单如下: #include iostream. h class Student (1) int computer; int total; public void getinf

15、ormation( ); void computesum( ); int getcode( ); int gettotalscore( ); Student( ); ; void Student: :getinformation( ) (2) cout “英语成绩 :“; cin english; cout “计算机成绩 :“; cin computer; void Student: computesum ( ) total = english + computer; cout “编号 “ code “总分 :“ total endl; int Student:getcode( ) retur

16、n code; int Student: gettotalscore ( ) return total; void firstname(Student * A ,int num) (3) tempsum = ( * A0 ). gettotalscore( ); for( int i=1; i num; i+) if ( ( ( * Ai ). gettotalscore( ) ) tempsum) tempcode = ( * Ai ). getcode( ); tempsum = ( * Ai ). gettotalscore( ); cout “总分最高者 -“ tempcode “:“

17、 tempsum endl; void main( ) Student * A3; int i,n =3 for(i=0;i n;i +) Ai = new Student; Ai - getinformation( ) for(i=0;i n;i +) Ai - computesum( ) firstname ( A,3 ); 11 阅读下列程序说明和程序段,将应填人 (n)处的字句写在对应栏内。 说明 下面是一个 Applet程序,其功能是有 2个按钮,分别为 First和 Second,以及一个Label控件。要求点击 First时则能在 Label中显示出 Command: First

18、,而点击Second时则能显示出 Command: Second,要求只能使用重载一次 actionPerfonned()方法。程序运行结果如图 6所示。 import java. awt.*; import java. awt. event. *; import java. applet. *; /* applet cede = exl_7, class width = 800 height = 400 /applet */public class ex_? extends Applet implements ActionListener private String str = “ok“;

19、 private Label |; private Button btn; public void init( ) (1) I = new Label(str); I. reshape(10, 10, 150, 30); add(I); (2) btn. reshape(10, 50, 60, 20); (3) add(btn); btn = new Button(“ Second“ ); btn. reshape(10, 100, 60, 20); (4) btn, addActionListener(this); add(btn); public void actionPerformed(

20、ActionEvent ae) str = “ Command:“ +ae. getActionCommand( ) (5) ex1_7, html HTML HEAD TITLE ext _7 /TITLE /HEAD BODY appletcode =“ ext?. class“ width =800 height =400 /applet /BODY /HTML 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 11答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 101,301 【试题解析】 当 M=4, R=0表示客人数为 4,对房间等级没有要求,

21、根据流程图,依次判断各个房间是否满足要求, 101有 4张床且房间空闲,满足要求;102、 202已被占用,排除, 201床数为 3 4,排除; 301有 6张床,且未被占用,满足条件,所以,输出结果为: 101, 301。 2 【正确答案】 RATE(RANK(I)*M- DAYRENT(J) 【试题解析】 房间的费用是根据房间的等级和房间所住客人的数量决定,所以在框中应加入 RATE(RANK(I)*M- DAYRENT(J)。 3 【正确答案】 I N |j=K,其中, J=K也可写成 JK 【试题解析】 若要限制算法最多输出 K个房间号,也就是说,该程序执行输出结果的条件应为: (1)

22、所有房间都已检查完,且满足条件的房间数小于等于 K。 (2)没有检查完但满足条件的房间数已等于 K,所以 框中的条件应该改为 IN|j=K。 4 【正确答案】 改写文法为: (O)S ; (1)S ; (2)S(T) ; (3)TSN ; (4)N , SN; (5)N 非终结符 FIRST集 FOLLOW集 S a, ,( #., Ta, ,c N ,. 对左部为 N的产生 式可知: FIRST(SN)=, FIRST()= FOLLOW(N)= 5 【正确答案】 文法是 LL(1)的。 (1)SN ; (2)(T) ; (3) 6 【正确答案】 输入串 (a, a)#是文法的句子。 【试题

23、解析】 对于文法 Sa| | (T) TT, S|S 由于 SELECT(N, SN)SELECT(N)=,=( 作图 ),所以文法是 LL(1)的。 也可由预测分析表中无多重人口判定文法是 LL(1)的。 (3)对输入串 (a,a)#的分析过程为: 栈 当前输入符 剩余输入符 所用产生式 (STACK) (CUR_CHAR) (INOUT_STRING) (OPERATION) #S ( a,a)#. . #)T( ( a,a)#. S(T) #)T a ,a)#. . #)NS a ,a)#. TSN #)Na a ,a)#. Sa #)N , a)#. . #)NS, , a)#. N,

24、SN #)NS a )#. . #)Na a )#. Sa #)N ) #. . #) ) #. N # # 可见输入串 (a,a)#是文法的句子。 7 【正确答案】 (1)C#, CNAME(2)SOME(3)ALL(4)SC.S#=S.S# AND SC. C#=C.C#)(5)C#IN 8 【正确答案 】 (1)n=0(2)*r=*p(3)*r=0 【试题解析】 填空 1:变量 n用来记录子字符串在字符串中出现的次数,函数中对变量 n进行了类型声明,但并没有进行初始化,所以此处对 n初始化为 0。填空2:进行比较时,如果子字符串的字符与字符串中的字符相同,则将两个字符串的指针都自加 1,

25、继续进行比较,否则跳出循环。填空 3:如果此时指针 r所指的字符为 0,则说明子字符串在字符串中出现了一次,将记录变量 n加 1。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数 超过 1道,则仅题号小的 1道题解答有效。 9 【正确答案】 (1)factor()(2)atom()(3)n*10+c-0(4)mAtom()(5)num+=d 【试题解析】 (1)查找 “(”后的子分子式的分子量。 (2)得到元素的原子量。 (3)计算元素后面的数字。 (4)计算文法符号的分子量。 (5)将分子式的各个部分的分子量进行累加。 atom()查找输入字

26、符串一个元素,并输出它的原子量;遇到括号时,使用递归对括号后的元素进行识别和计算,输出后,检查是否括号匹配;遇到其他字符则直接返回 -1; 0表示失 败。 mAtom()对元素及其后面的数字进行辨识,并调用atom()计算它们的原子量。 Factor()对整个分子式进行辨识并计算其分子量。 10 【正确答案】 (1)itn code; int english; (2)coutcode; (3)int tempcode, tempsum; tempcode=(*A0). getcode(); 【试题解析】 本题是对 C+程序设计的综合考查,其设计类的成员及成员函数的定义与调用,数据的输入输出,

27、for循环语句 ,if条件判断语句等多个知识点,注意(3)中指针数组的使用,指针数组是一组指针,每一个成员都按照指针的操作规则,但是整个访问规则仍然使用数组下标方式,如 A0指的是第一个指针,而*A0是取出第一个指针指向的内容。 11 【正确答案】 (1)setLayout(null); (2)btn=new Button(“First“); (3)btn.addActionListener(this); (4)bm. setActionConnnand(“second“); (5). setText(str); 【试题解析】 本题主要考查 Java语言中高级事件 ActionEvent和 AWT基本构件Label的常用方法的使用。解题关键是熟练掌握动作事件 Ac-tionEvent和 Label构件的常用方法。在本题中,明确注册的事件监听器是监听按钮的,而不是 Label的;调用 ActionEvent的 setActionConnnand ()方法改变了 ActionCommand,使按下第二个按钮时显示 Command: second而不是 Command: First。调用 Label的 setText()方法,而不是 Button的方法。

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

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

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