[计算机类试卷]2008年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc
《[计算机类试卷]2008年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]2008年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析.doc(15页珍藏版)》请在麦多课文档分享上搜索。
1、2008年上半年软件水平考试(初级)程序员下午(应用技术)试题真题试卷及答案与解析 1 阅读以下说明和流程图,填补流程图中的空缺 (1) (9),将解答填入对应栏内。【说明】 假设数组 A中的各元素 A(1), A(2), , A(M)已经按从小到大排序(M1);数组 B中的各元素 B(1), B(2), , B(N)也已经按从小到大排序 (N1)。执行下面的流程图后,可以将数组 A与数组 B中所有的元素全都存入数组 C中,且按从小到大排序 (注意:序列中相同的数全部保留并不计排列顺序 )。例如,设数组 A中有元素: 2, 5, 6, 7, 9;数组 B中有元素 2, 3, 4, 7:则数组
2、C中将有元素: 2, 2, 3, 4, 5, 6, 7, 7, 9。【流程图】 2 阅读以下说明和 C程序,将应填入 (n)处的字句写在对应栏内。 【说明】 下面的程序按照以下规则输出给定名词的复数形式。 a若名词以 “y”结尾,则删除 y并添加 “ies”; b若名词以 “s”、 “ch”或 “sh”结尾,则添加 “es”; c其他所有情况,直接添加 “s”。 【 C程序】 #include stdio h #include string h char*plural(char *word) int n; char *pstr; n strlen(word); /*求给定单词的长度 */ ps
3、tr (char*)malloc(n+3); /*申请给定单词的复数形式存储空间 */ if (!pstr|n 2) return NULL; strcpy(pstr, word); /*复制给定单词 */ if (1) pstrn-1 i; pstrn e; pstrn+1 s; (2); else if(pstrn-1 s| |pstrn-1 h&(3) pstrn e; pstrn+1 s; pstrn+2 0; else pstrn s; pstrn+1 0; ) (4); main() int i; char *ps; char wc910 “chair“, “dairy“, “bo
4、ss“, “circus“, “fly“, “dog“, “church“, “clue“,“dish“); for(i 0; i 9; i+) ps (5) ; printf(“%s: %sn“, wci, ps); /*输出单词及其复数形式 */ free(ps); /*释放空间 */ system(“pause“); 3 阅读以下说明和 C程序,将应填入 (n)处的字句写在对应栏内。 【说明】 下面的程序用 DoleRob算法生成 N阶 (N为奇数 )魔方阵 (各行、列、对角线数字之和相等 )。该算法的过程为:从 1开始,按如下方法依次插入各自然数,直到 N2为止。 a在第一 行的正中插
5、入 1。 b新位置应当处于最近插入位置的右上方,若该位置已超出方阵的上边界,则新位置取应选列的最下一个位置;若超出右边界,则新位置取应选行的最左一个位置。 c若最近插入的元素是 N的整数倍,则选同列的下一行位置为新位置。 例如, 3阶魔方阵如下所示: 8 1 6 3 5 7 4 9 2 【 C程序】 #include stdio.h #include stdlib.h #define SIZE 50 main( ) int row, col, n, value; int aSIZE+1SIZE+1; /*不使用下标为 0的元素 */ printf(“请输入要输出魔方阵的阶数 n(奇数, %d)
6、: n “, SIZE); scanf(“%d“, &n); if (!(n % 2)|n 1 |(1) printf(“输入数据有误 !n“); exit(0); row 1; col (n+1)/2; value 1; while(value (2) arowcol value; /*计算下一位置 */ if(value%n ! 0) row-; (3); if(row 1) row n; if(col n)(4); else row+; value (5); printf(“n%d阶魔方阵如下所示 :nn“, n); for(row 1; row n; row+) for(col 1;
7、col n; col+) printf(“%5d“, arowcol); printf(“n“); 4 阅读以下说明和 C函数,将应填入 (n)处的字句写在答题纸的对应栏内。 【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为 “46 512037-*+”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇,到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中 。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式 “46 5120 37-*+”的计算过程如下。 a依次将 46、 5、
8、 120、 37压入栈中; b遇到 “-”,取出 37、 120,计算 120-37=83,将其压入栈中: c遇到 “*”,取出 83、 5,计算 583=415,将其压入栈中; d遇到 “+”,取出 415、 46,计算 46+415=461,将其压入栈中; e表达式结束,则计算过程完成。 函数 computing(char expr, int *result)的功 能是基于栈计算后缀形式的表达式 (以串形式存入字符数组 expr)的值,并通过参数 result返回该值。函数的返回值为 -1/0,分别表示表达式有 /无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,
9、且运算符仅包含加 (“+”)、减 (“-”)、乘 (“*”)、除(“”)。 函数 computing中所用栈的基本操作的函数原型说明如下。 . void InitStack(STACK *s):初始化栈。 . void Push(STACK, s, int e):将一个整数压栈,栈中元 素数目增 1。 . void Pop(STACK *s):栈顶元素出栈,栈中元素数目减 1。 . int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。 . int IsEmpty(STACKs):若 s是空栈,则返回 1;否则返回 0。 【 C函数】 int computing (cha
10、r expr, int *result) STACK s; int tnum, a, b; char *ptr; InitStack(&s); ptr expr; pstr /*字符指针指向后缀表达式串的第一个字符 */ while(*ptr! 0) if(*ptr= ) /*当前字符是空格 */ (1); /*字符指针指向下一字符 */ continue; else if(isdigit (*ptr) /*当前字符是数字,则将该数字开始的数字串转换为数值 */ tnum (2); while (*ptr 0 & *ptr 9) tnum tnum * 10 +(3); ptr+; Push(
11、4); else /*当前字符是运算符或其他符号 */ if (*ptr +|*ptr -|*ptr *|*ptr /) if(!IsEmpty(s) a Top(s); Pop(&s); /*取运算符的第二个运算数 */ if(!IsEmpty(s) b Top(s); Pop(&s); /*取运算符的第一个运算数 */ else return -1; else return -1; switch (*ptr) case +: Push(&s, b+a); break; case -: Push(&s, b-a); break; case *: Push(&s, b*a); break; c
12、ase /: Push(&s, b/a); break; else return -1; ptr+; /*字符指针指向下一字符 */ /*while*/ if(IsEmpty(s) return -1; else (5) Top(s); Pop(&s); /*取运算结果 */ if(!IsEmpty(s) return -1; return 0; 5 阅读以下应用说明及 Visual Basic程序代码,将应填入 (n)处的字句写在对应栏内。【应用说明】 某应用程序可选择打开用户指定的文本文件,将其内容显示在指定的文本框内供用户编辑,并将编辑后的结果保存在用户指定的文件中。运行 时的窗口如图
13、6-1所示,其中有 6个标签、一个驱动器列表框、一个目录列表框、一个文件列表框、一个文件类型组合框、一个文件编辑文本框、一个文件名文本框以及两个命令按钮。 该程序的开发要求如下。 (1)通过驱动器列表框 (Drivel)、目录列表框 (Dirl)和文件列表框(Filel),选择文件。 (2)文件类型组合框 (Cmb_type)设置为下拉式列表框,其中有三个供选项,分别为 “所有文件 (* *)”、 “文本文件 (*.txt)”和 “可执行文件 (* exe)”。在文件列表框中列出的文件类型会自动与文件类型组合框中 选择的文件类型相匹配。 (3)在文件列表框中单击一个文件名时,该文件名会显示在文
14、件名文本框 (Txt filename)中。 (4)在文件列表框中双击一个文件名时,若是文本文件,则在文件编辑文本框 (Txt file)中显示该文件的内容并可进行编辑;若不是文本文件,则弹出一个对话框,提示 “请选择文本文件 !”。 (5)对于编辑后的文本文件,可在文件名文本框中输入新的文件名,并单击命令按钮 (Cmd save)进行保存。【 Visual Basic程序代码】 Private Sub Form_Load() Cmb_type Addltem “所有文件 (*.*)“ Cmb_type Addltem “文本文件 (*.txt)“ Cmb_type Addltem “可执行文
15、件 (*.exe)“ Cmb_type ListIndex 0 Filel.Pattern “* *“: Txt_filename.Text “ “ Txt_file.Text “ “ End Sub Private Sub Dirl Change() Filel Path (1) End Sub Private Sub Drivel Change() Dirl Path Drivel Drive End Sub Private Sub Cmb_type_click() Select Case Cmb_type.(2) Case 0 Filel Pattern “*.*“ Case 1 Fil
16、el.Pattern “*.txt“ Case 2 Filel.Pattern “*.exe“ End Select End Sub Private Sub Cmd_save_Click() usrFileGetFileName() 函数 GetFileName获得 要保存的文件名 Open usrFile For Output As #1 定义 usrFile为 1号输出文件 Print #1, Txt file Text 输出到 1号文件 Close #1 End Sub Private Sub Filel_DblClick() If right(Filel.FileName, 3) (3
17、)Then MsgBox “请选择文本文件 !“ Exit Sub End If usrFile GetFileName() 函数 GetFileName获得要打开的文件名 Open usrFile For Input As #1 定义 usrFile为 1号输入文件 Txt_file Text “ “ DO While (4) EOF(1) Line Input #l, fContext 从 1号文件读入一行 Txt_file Text; Txt file Text +(5)+vbCrLf Loop Close #1 End Sub 其他代码略 6 阅读下列说明、图和 C抖代码,将应填入 (
18、n)处的字句写在答题纸的对应栏内。 【说明】 已知对某载客车辆 (Car)进行类建模,如图 5-1所示,其 中类 Engine表示发动机引擎,类 Wheel表示车轮,类 Body表示车身,类 Driver表示司机,类Passenger表示乘客。 【 C+代码】 const int(1) 7; /定义最多载客数 const int MAX WHEELS 5; /定义最多轮胎数 class Body /此处代码省略 ; /车身类 class Passenger /此处代码省略 ; /乘客类 class Wheel /此处代码省略 ; /车轮类 class Driver /司机类 public: s
19、tring name; /表示第几路公交车司机 Driver(string driverName): name(2)/构造函数 ; class Engine/引擎类 public: string engineNo; /引擎编号 Engine(string engineNo)(3)- engineNo engineNo; /构造函数 ; class Car/汽车类 protected: Engine * engine; Driver * driver; Body body; Wheel * wheels MAX_WHEELS; Passenger * passengers MAX_PASSENG
20、ERS; public: Car(Driver *driver) /构造函数 this- driver driver; engine new Engine(“TX6536型号引擎 “); for (int index 0; index MAX WHEELS; index+) wheelsindexnew Wheel(); for(int index 0; index MAX_PASSENGERS;index+) passengersindex NULL; virtual Car()/析构函数 for( int index0; index MAX_WHEELS; index+) delete w
21、heelsindex; delete(4); int getPassengerNumber()/获取车上乘客数量 /此处代码省略 void getOnPassenger(Passenger * aPassenger)/乘客上车 /此处代码省略 void run() /开车 if(driver NULL)cout “司机尚未上车 !“; return; /此处代码省略 ; void main() Driver driver(“第五路公交车司机 “); Car car(5); Passenger passengersMAX_PASSENGERS; for(int index 0; index MA
22、X PASSENGERS;index +) /乘客上车处理 car getOnPassenger(&passengers index); car run(); 7 阅读下列说明、图和 Java代 码,将应填入 (n)处的字句写在对应栏内。【说明】 已知对某载客车辆 (Car)进行类建模,如图 7-1所示,其中类 Engine表示发动机引擎,类 Wheel表示车轮,类 Body表示车身,类 Driver表示司机,类 Passenger表示乘客。 【 Java代码】 class Body /此处代码省略 ); /车身类 class Passenger /此处代码省略 )/ /乘客类 class W
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 2008 上半年 软件 水平 考试 初级 程序员 下午 应用技术 试题 答案 解析 DOC

链接地址:http://www.mydoc123.com/p-492733.html