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

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

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 25 及答案与解析 1 阅读以下应用程序说明和 C程序,将 C程序段中 (1) (6)空缺处的语句填写完整。 【说明】 某大学征询学生意见,从各学院预选的 n(n60)位优秀大学生中,评选出 “十佳大学生 ”。以下【 C程序】对各位学生选票进行相关的统计、排序等处理。 (1)各学院预选的优秀大学生按 1, 2, 顺序连续编号,每个编号用两个字符表示,即 01, 02, 。 (2)所回收的选票按以下格式存于文件 source中,每行字符串对应一张选票。其中 ,姓名占 10个字符,学院名称占 30个字符,大学生编号占 20个字符。 (3)对应名次

2、的大学生编号可以有空缺,但必须用 00表示。 (4)若编号超出规定范围,或编号重复出现,按照废票处理。 (5)按选票中所列 “十佳大学生 ”顺序给出各名大学生的得分。评分标准如下: 一 二 三 四 五 六 七 八 九 十 15 12 9 7 6 5 4 3 2 1 (6)按各位大学生得分数由高到低顺序排队,并按以下格式列出 “十佳大学生 ”排行表。 名次 大学生编号 合计得分 合计得票数 若得分相同,则得票数多的在前;若得分和得票数都相同,则编号小的在前。 以下【 C程序】中所应用到的函数 fopen、 fclose和 fgets都是 I/O程序库中的函数。 【 C程序】 #include s

3、tdio. h #define n 60 long int tnn, tdn, scoren+110, ordern; char s80; int mark=(15,12,9,7,6,5,4,3,2,1); FILE *fp, *fopen(); Main() int c, g, k, I, j, b10; long int e, d, t, tt, dd; char * p; for(i=0; i =n; i+) for(j=0; j 10; j+) scoreij=0; fP=fopen(“source“, “r“); /*以 读方式打开文件 source*/ p=fgets(s, 80,

4、 fp); /*读 fp所指文件的下一行字符串于 s*/ while(*p) g=l; k=0; p+=40; while(k 10) c=(*p+)-0)*10+(*p+)-0); bk+=c) if(c =n) if(c) i=0; While( (1) ); If( (2) )g=0; break; elseg=0; break; If(g) For(i=0; i k; i+) If(bi) (3); p=fgets(s, 80, fP); Fclose(fp); /*关闭 fp所指文件 */ For(i=1; i n; i+) For(t=0, d=0, j=0; j 10; j+)

5、t +=(e=scoreij); d +=e * markj; tni-1=t; tdi-1=d; orderi-1=i; For(i=0; i n-1; i+) k=i; for(j=i+1; j n; j+) if(t=tdorderj-1) (d=tdorderk-1) k=j; else if(t=d) tt=(4); dd=(5); for(c=0; c 10; c+) if(e=(6) 0) k=j; break; else if(e 0)break; If(k!=i) t=orderk; orderk=orderi; orderi=t; For(i=0; i 10; i+) Pr

6、intf(“%2d%2d%d%dn“, i+1, orderi, tdorderi-1, tnorderi-1); 1 请将以上 C程序段中, (1) (6)空缺处的语句填写完整。 2 以上 C程序段中,采用了哪种算法对大学生得分进行排序 ? 3 阅读以下应用程序说明和 C程序,将 C程序段中 (1) (7)空缺处的语句填写完整。 【说明】 以下【 C程序】的功能是,逐一从指定课程成绩文件中读入学生的考号和成绩,对同一学生汇总他 (她 )的总 成绩,并按如图 6-14所示格式输出名次(按总成绩由高到底的顺序 )、总成绩、同一名次的学生人数、同一名次学生的学号(按学号由小到大的顺序 )。 该应用

7、程序约定学生学习课程不超过 30种,课程成绩文件的第 1个数字就是课程号。统计过程中,同一课程号的成绩文件不能重复输入。 该应用程序采用链表结构存储学生的相关信息,链表中的每个表元对应一位学生。在数据输入过程中,形成一个按学号从小到大顺序链接的有序链表。当数据输入结束后,程序按总成绩从高到低,学号从小到大的顺序对链表排序。最后程序按指定格式输出链表中的信息。 【 C程 序】 #include stdio.h #define M 30 #define NLEN 10 typedef struct node int cur_s; /* 最近输入成绩的科目 */ Char noNLEN; int s

8、core; struct node *next; NODE; int sM, sp, ss, i, mark, order, C; FILE *fp; NODE *h, *U, *V, *p; Char fname80, noNLEN, ans; main() for(h = NULL, sp = 0; ;) printf(“输入科目成绩文件名 (输入 aaaa表示强行结束 )。 n“); while(1) scanf(“%s“, fname); if (strcmp(fname, “aaaa“) = 0) break; if (fp = fopen(fname, “r“) = NULL) p

9、rintf(“不能打开文件 %s, 请重新输入科目文件名。 n“, fname); else break; if (strcmp(fname, “aaaa“) = 0) break; fscanf(fp, “%d“, /* 输入科目号 */ssp=s; for (i=0; si ! = ss; 1+); if ( (1) ) printf(“该科目的成绩已输入,请输入别的科目成绩文件。 n“); continue; sp+; while (fscanf(fp, “%s%d“, no, v != NULL u=v, v= v- next); if (v !=NULL /* 累计总成绩 */ v-

10、cur_s = ss; /* 同一科目成绩重复输入,后输入成绩被忽略 */ else p = (NODE *)malloc(sizeof(NODE); /* 一位新的学生 */ strcpy(p- no,no); p- score = mark; p- cur_s = ss; p- next = v; if ( v = h) (2) ; else (3) ; fclose(fp); printf(“ 还有科目成绩文件要输入吗 ? (Y/N) “); scanf(“%c“, if (ans = N | ans = n) break; /* 以下按总成绩和学号对链表排序 */ v = (NODE

11、*)malloc(sizeof(NODE); v- next = h; h = v; while (v- next != NULL) /* 在余下的部分链表中找总成绩高学号小的表元 */ for(p = v, u = v- next; u- next != NULL; u = u- next) if (u- next- score p-next- score | u- next- score = p- next- score if (p != v) u = p- next; p- next = (4) ; (5)= v- next; v-next = u; v = v- next; v = h

12、; h = h- next; free(v); printf(“ 名次 总成绩 人数 学号n “); /* 以下按格式要求输出 */ v = h; order = 1; while (v != NULL) for(c = 1, u = v- next; u != NULL (6); printf(“%4d%7d%8d “, order, v-score, c); for (order += c, i = 1;(7); v = v- next, i+) if (i 1 printf(“%s “, v- no); printf (“n“); 4 请阅读以下技术说明和 C代码,将程序段中 (1) (

13、5)空缺处的语句填写完整。 【说明】 著名的四色定理指出任何平面区域图均可用 4种颜色着色 ,使相邻区域着不同的颜色。以下 C程序对给定的区域图找出所有可能的不超过 4种颜色的着色方案。该程序中用 1 4分别表示 4种颜色。要着色的 N个区域用 0 -1编号,区域相邻关系用 adj矩阵表示,矩阵的 i行 j列的元素为 1,表示区域 i与区域了相邻;矩阵的 i行 j列的元素为 0,表示区域 i与区域 j不相邻。数组 color用来存储着色结果, colori的值为区域 i,所着颜色。 【 C程序】 #include stdio.h #define N 10 void output(int col

14、or) /*输出一种着色方案 */ int i ; for ( i = 0 ; i N ; i+ ) printf( “%4d“ , colori ) ; printf (“n“) ; int back(int *ip ,int color ) /*回溯 */ intc = 4 ; while ( c = 4 ) if ( *ip = 0 ) return 0 ; - (*ip) ; c =(1); color*ip =-1 ; return c ; /*检查区域 i,对 c种颜色的可用性 */ int colorOk(int i , intc , int N ,int color ) int

15、 j ; for (j = 0 ; j i ; j+ ) if ( (2) ) return 0 ; return 1 ; /*为区域 i选一种可着色的颜色 */ int select (int i ,int c ,int adj N ,int color ) int k ; for(k = c ; k = 4 ; k+ ) if( colorOK( (3) ) return k ; return 0 ; int coloring(int adj N) /*寻找各种着色方案 */ int colorN , i , c , cnt ; for(i = 0 ; i N ; i+) colori =

16、-1 ; i = c = 0 ; cnt = 0 ; while(1) if(c =(4) ) = 0 c = back( if( c = 0 ) return cnt; else (5); i+ ; if i = N) output(color); +cnt ; c = back( else c = 0 ; void main()( int adjN N = 0,1,0,1,1,1,1,1,1,1, 1,0,1,1,0,1,1,1,1,0, 0,1,0,1,0,1,1,0,1,1, 1,1,1,0,1,1,0,0,1,1, 1,0,0,1,0,1,0,0,0,0, 1,1,1,1,1,0,1

17、,0,0,1, 1,1,1,0,0,1,0,0,1,0, 1,1,0,0,0,0,0,0,1,1, 1,1,1,1,0,0,1,1,0,1, 1,0,1,1,0,1,0,1,1,0, ; printf(“共有 %d组解 .n“,coloring(adj); 5 阅读以下函数说明和 C代码,将 C程序中 (1) (5)空缺处的内容补充完整。 【说明】 对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合 a,b,c,d及其权值 2、 7、 4、 5,可构造如图 6-15所示的最优二叉树,以及相应的结构数组 Ht(如表 6-14所示,其中数组元

18、素 Ht0不用 )。 结构数组Ht的类型定义如下: #define MAXLEAFNUM 20 struct node char ch; /*扫当前节点表示的字符,对于非叶子节点,此域不用 */ Int weight; /*当前节点的权值 */ int parent; /*当前节点的父节点的下标,为 0时表示无父节点 */ int lchild, rchild; /*当前节点的左、右孩子节点的下标,为 0时表示无对应的孩子节点*/ )Ht2*MAXLEAFNUM; 用 “0”或 “广标识最优二叉树中分支的规则是:从一个节点进入其左 (右 )孩子节点,就用 “0”(或 “1”)标识该分支,如图

19、6-15所示。 若用 上述规则标识最优二叉树的每条分支后,从根节点开始到叶子节点为止,按经过分支的次序将相应标识依次排列,可得到由 “0”、 “1”组成的一个序列,称此序列为该叶子节点的前缀编码。例如,图 6-15所示的叶子节点 a、 b、 c、 d的前缀编码分别是110、 0、 111、 10。 函数 void LeafCode(int root,int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子节点,为所有的叶子节点构造前缀编码。其中,形参 root为最优二叉树的根节点下标;形参 n为叶子节点个数。在函数 void LeafCode(int root,int n)构造过程中,将

20、 Htp.weight域用做被遍历节点的遍历状态标志。 函数 void Decode(char *buff,int root)的功能是:将前缀编码序列翻译成叶子节点的字符序列,并输出。其中,形参 root为最优二叉树的根节点下标;形参 buff指向前缀编码序列。 【函数 4.1】 char *HC; void LeafCode(int root, int n) /*为最优二叉树中的 n个叶子节点构造前缀编码, root是树的根节点下标 */ int I,p=root,cdlen=0; char code20; Hc = (char *)malloc(n+1)*sizeof(char *); /

21、*申请字符指针数组 */ For(i = 1;i = p;+I) Ht i. weight = 0; /*遍历最优二叉树时用做被遍历节点的状态标志 * / While (p) /*以非递归方法遍历最优二叉树,求树中每个叶子节点的编码 */ If(Htp.weight = 0) /*向左 */ Htp.weight = 1; If(Htp.lchild != 0) p = Htp.lchild; codecdlen+ = 0; else if(Htp.rchild = 0) /*若是叶子节点 ,则保存其前缀编码 */ Hcp = (char *)malloc(cdlen+1)*sizeof(ch

22、ar); (1); strcpy (Hc p,code); else if(Htp.weight = 1) /*向右 */ Ht p.weight = 2; If(Htp.rchild != 0) p = Ht p.rchild; codecdlen+ =1; else /*Htp.weight = 2,回退 / Ht p.weight = 0; p =(2); (3); /*退回父节点 */ / *while .结束 * / 【函数4.2】 void Decode(char *buff,int root) int pre = root,p; while(*buff != 0) p = roo

23、t; while(p != 0) /*存在下标为 p的节点 */ pre = p; if( (4) ) p = Htp.lchild; /*进入左子树 */ else p = Htp.rchild; /*进入右子树 */ else buff+; /*指向前缀编码序列的下一个字符 */ (5); printf(“%c“, Hrpre.ch); 6 以下是与 Visual Basic开发应用有关的 5个问题。对每一个问题,请将解答填入对应栏内。 1. 在 Visual Basic中,工程文件、窗体文件和标准模块文件的扩展名是什么 ?请从下列选项中选择: prg、 prj、 exe、 vbp、 fo

24、rm、 frm、 win、 fra、 std、 bas、 vbs、 vbm 2设某窗体上有一个命令按钮,其名称为 CmdSave,运行时该按钮上显示有 “保存 (S(下划线 )”字样的信息。为使热键 Alt+S与该命令按钮相关联,应该对按钮CmdSave的 Caption属性设置什么样的属性值 ? 3设某窗口内有一个图像框 Imagel,以及两个命令按钮 “放大 ”和 “缩小 ”。单击“放大 ”按钮就会使该图像框的长和宽都放大 10%;单击 “缩小 ”按钮就会使该图像框的长和宽都缩小 10%(该 图像框的左上角不动 )。请分别写出这两个命令按钮的单击事件过程中的程序代码。 4为使某个单选按钮初

25、始时默认被选中,在开发时应怎样做 ? 5若有语句 Tmpval=MsgBox(“非法操作 !”, vbOKCancel+vbCritical, “提示 ”),请简要描述程序运行时弹出的消息框的主要特征。 7 阅读以下应用说明及 Visual Basic部分程序代码,将应填入 (n)处的字句写在对应栏内。 【说明】 本应用程序是一个小写数字转换成大写格式的转换器,其运行窗口如图 5所示。 窗口中有两个标签(lblNumber和 lblChinese)、两个文本框 (txtNnmber和 txtChinese)和一个命令按钮(cmdChange)。当单击按钮 cmdChange时,将文本框 txt

26、Number中数字转换成中文大写,并显示在文本框 txtChinese中。例如,在文本框 txtNumber输入 0076845,单击 cmdChange按钮,将在文本框 txtChinese中显示 “柒万陆仟捌佰肆拾伍 ”。 程序中调用的函数 CChinse(Strdigit As String)的功能是先删除字符串的所有前导 0,再调用函数 Change(Strdigit As String),将数字字符串 Strdigit转换成中文大写格式。 为了防止用户在文本框 txtNumber输入非数字形式的字符,程序将以空字符代替所输入的非数字有形字符。 【程序】 Private Functio

27、n Transfer(Strdigit As String)As String 完成小写向大写的转换,这段代码省略 End Function Private Function CChinese(Strdigit As String)As String Dim intLen,intCounter As Integer intLen = Len (Strdigit) If intLen 0 Then intcounter = 0 Do 过滤数字串 Strdigit的前导 0 intcounter = intcounter + 1 Loop Until Mid(Strdigit,(1) intLen

28、 =(2) Strdigit =(3) (Strdigit,intLen) CChinese = Transfer(Strdigit) End If End Function Private Sub cmdChange_Click( ) txtChinese.Text=CChinese(4) 调用 Cchinese函数 End Sub Private Sub txtNumber_KeyPress(KeyAscii As Integer) Select Case KeyAscii 根据输入字符的 ASCII码的值进行 判断 Case KeyAscii 32 保留输入的控制字符 Case 48 T

29、o 57 保留输入的数字字符 Case Else 其他情况以空字符代替 (5)=0 End Select End Sub 8 阅读以下说明和 C+程序,将应填入 (n)处的字句写在对应栏内。 【说明】 以下程序的功能是计算正方体、球体和圆柱体的表面积和体积并输出。 程序由 4个类组成:类 cube、 sphere和 cylinder分别表示正方体、球体和圆柱体;抽象类 container为抽象类,提供了两个纯虚拟函 数 surface_area()和 volum(),作为通用接口。 【 C+程序】 #include iostream.h #define pi 3.1416 class cont

30、ainer protected: double radius; public: container(double radius) container:radius=radius; virtual double surface_area()=0; virtual double velum()=0; ; class cube:(1) /定义正方体类 public: cube(double radius):container(radius); double surface_area () return 6 * radius * radius; double volum() return radius

31、 * radius * radius; ; class sphere:(2) /定义球体类 public: sphere(double radius): container(radius); double surface_area() return (3); double volum() return pi * radius * radius * radius * 4/3; ; class cylinder:(4) /定义圆柱体类 double height; public: cylinder(double radius,double height):container(radius) con

32、tainer:height=height; double surface_are a () return 2 * pi * radius * (height+radius); double volum () return (5); ; void main() container * p; cube obj1 (5); sphere obj2(5); cylinder obj3(5,5); p= cout “正方体表面积 ”( p- surface_area() end1; cont “正方体体积 ” p- volume() end1; p= cout “球体表面积 ” p- surface_a

33、rea() end1; cout “球体体积 ” p- volume() end1; p= cout “球体表面积 ” p- surface_area() end1; cout “球体体积 ” p- volume() end1; 9 阅读以下说明和 Java代码,将解答写入对应栏内。 【说明】 下面程序的功能是找出所有三位数中,个、十、百位数字的立方和等于 该数本身的三位数并显示。在程序的每条横线处填写一个适当的词或语句,使程序的功能完整。 public (1) class cube_Root public static void (2) main(String args) System. o

34、ut. println (“个、十、百位数字的立方和等于该数本身的三位数有: “); for(int n=100;n 1000;n+) int a,b,c; (3) b=n/10%10; (4) if(5) System.out.println(n); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 25 答案与解析 1 【正确答案】 (1)c!=bi+,或其他等价形式 (2)i k,或其他等价形式 (3)scorebii+,或其他等价形式 (4)orderj (5)ordcrk (6)scorettc-scoreddc 【试题解析】 仔细阅读本试题的程序说明和【 C程序】后,可得出评选

35、“十佳大学生 ”的数据格式和算法。该 C程序先读入一行字符,进行合法性检查后再进行选票统计;读入所有选票后,再计算每个大学生的得分和选票数,最后进行排序输出。 通常,阅读一个 C程序时,应先明白程序中所用变量的含义,这对解题是很有帮助的。程序中所用变量的含义,除了可在程序说明中了解之外,还可以通过程序中的输入 /输出语句来获知。对照程序说明中给出的输出次序可以了解 到,数组order是用来存放第 i名大学生的编号,数组 td 用来存放大学生的总分,数组 tn用来存放大学生得到的选票总数。 程序中用 while(*p).语句所包含的程序段进行合法性检查并进行统计。合法性检查即排除非法的选票。指针

36、 p 用于表示每次读入的一行 80个字符的首地址,语句 “p+=40”使 p 指向每张选票的第 40个字符,把每张选票上的大学生编号转换成十进制数 c,并存入数组 b 中。由于每张选票最多可选十名,因此需用 k 10来进行循环控制。 由于 (1)、 (2)空缺处位于 while(*p).的 内循环中,且由语句 “g=0; break;”(即变量 g为 0时跳出该循环 )和语句 “if(g)”可知,譬为合法性标记,因此 (1)、 (2)空缺处所填写的语句完成选票的合法性检查。由于非法选票有 “编号超出规定范围 ”和 “编号重复出现 ”两种,因此应当把当前编号 c和已处理过的编号 bi(i=0.k

37、-1)进行比较,从而来判断是否满足 “编号超出规定范围 ”,即 (1)空缺处应填入 “c!=bi+”。另外,当前编号 c已存放在第 k 个字符中,当 i小于 k 时,即表示有编号重复,因此 (2)空缺处应填入 “i k”。 (3)在空 缺处的 “for(i=0; i k; i+)”循环程序段中,数组 bi表示编号为 bi的大学生,在该张选票上被评为 i+1名;数组 scorebii表示编号为 bi的大学生,被评为 i+1名的选票有 scorebii张。当一张选票上的 10个编号都合法时,则应把该选票上的数据存入数组 score中,即对编号为 bi的大学生所得的第 i+1名选票加 1,因此 (3

38、)空缺处应填入 “scorebii+”。 “fclose(fp);”之后的语句是对大学生的得分进行统计工作,其结果分 别存放在大学生编号数组 Order、选票总数变量 tn 和总分变量 td 中,然后进行排序。由语句的结构可知,用变量 k标记得分最高的位置,即编号为 orderk的大学生得分为本次排序中最高,然后在外层 for循环中进行条件交换,由此可知,该排序采用的是选择排序算法。 在排序过程中如果得分相同,即程序中条件 “if(t=d)”成立,则必须根据两名大学生的得票情况进行排序,得分名次在前、票数多者排在前面。 (6)空缺处所填写的语句是对得票数相同的情况进行排序处理, e为控制变量,

39、用来存放编号为Orderj和 Orderk的相同名次的得票数的比较结果,并根据该比较结果确定是否进行位置交换。因此 (4)空缺处所填写的内容是 “orderj”; (5)空缺处所填写的内容是 “orderk”; (6)空缺处所填写的内容是 “scorettcscoreddc”,即编号为 j的大学生与编号为 k 的大学生的得票数之差。 2 【正确答案】 选择排序算法 【试题解析】 由【问题 1】要点解析可知,该 C程序段采用选择排序算法对大学生得分进行排序处理。 3 【正确答案】 (1)i sp或 i!=sp或其他等价的形式 (2)h=p (3)u- next=p (4)u- next (5)u

40、- next (6)C+,u=u- next (7)i =c,或 c-!=0,或 u!=v,或 c- 0,或 c-或其他等价的形式 【试题解析】 通读题干说明和 C程序之后可知,该 C程序首先从指定的文件中输入某个科目的学生学号和成绩,并进行合法性检查,全部输入完成后,按总成绩进行排序。程序采用链表结构进行存储,最后按指定的格式输出。 该应用程序首先输入数据, (1)空缺处所在的 for循环语句是对输入的数据进行检查,数组 s的作用是记录已经 输入的科目。当输入一个科目之后,就在数组 s中进行检查处理。如果已有该科目,就提示 “该科目的成绩已输入,请输入别的科目成绩文件 ”信息,要求用户重新输

41、入。其中, if语句用于判断是否有该科目,因此 (1)空缺处所填写的内容是 “i sp”或 “i!=sp”。 接着在链表中寻找最近输入的学号,循环语句 “for(v=h;v!=NULL u=v,v=v- next);”结束之后,通过 if.else语句对循环的出口进行判断, (2)、 (3)空缺处是对应没有该学生的成绩 (即是一 位新学生 )的情况,此时需要申请存储空间,然后进行赋值并把它插入到链表中。由于链表是排序的,因此需要判断插入点是否是第 1个节点。如果是第 1个节点,就需要修改表头节点的指针,因此 (2)空缺处所填写的内容是 “h=p”, (3)空缺处所填写的内容为 “u-next=

42、p”。 接下来程序通过 while循环对链表按总成绩的高低和学号从小到大的顺序进行排序。通读 C程序可知,指针 p所指向的节点应在指针 u 所指向的节点之前 (或等于 ),指针 v所指向的节点为当前节点。在内循环结束之后,若 p!=v,则表示找到一个满足排序条件的节点 ,此时就需要移动指针。因此 (4)、 (5)空缺处所填写的内容均为 “u- next”。 应用程序的最后一个 while循环语句,其功能是对排序后的链表按指定的格式进行输出。变量 c的功能是计数器,用来记录总成绩相等的人数,因此 (6)空缺处所填写的内容的作用是使指针 u下移,计数器加 1,即该空缺处应填入 “c+,u=u-ne

43、xt”。 变量 Order的作用是记录名次,而 (7)空缺处所在的 for循环语句的功能是,输出成绩相同的学生的学号。由于计数器 c的初值为 1,因此该 for循环的结束条件为c=O或 i=c。由此 进一步推知, (7)空缺处所填写的内容是 “c-!=0”或 “i =c”或其他等价的形式。 4 【正确答案】 (1)color*ip (2)adjij!=0 ”,是进行字符串的复制运算,则需要对源串中的串结束标志进行设置,因此 (1)空缺处所填写的语句是 “codecdlen=0”或 “codecdlen=0”。 (2)空缺处是从右子树向父节点回退的处理,因此该空缺处所填入的内容是“Htp.par

44、ent”。由于每向上层回退 一次,节点的路径长度就会减 1,因此 (3)空缺处所填写的语句是 “cdlen”或其等价形式。 函数 void Decode(char *buff,int root)的功能是:将前缀编码序列翻译成叶子节点的字符序列,并输出。译码的过程是:从根出发,若编码序列的当前字符是 “0”,则进入左子树分支,否则进入右子树分支,直到到达一个叶子节点时为止,此时叶子所表示的字符就是翻译出的字符。若编码序列还没有结束,则重新从树根出发,重复上述过程,直到将编码序列结束。所以 (4)空缺处所填写的语句是 “*buff=0”或其等价 形式。 由于到达一个叶子节点时,超前读入了一个编码序

45、列中的字符,因此 (5)空缺处所填写的语句是 “buff”或其等价形式。 6 【正确答案】 (1)工程文件的扩展名是 vbp,窗体文件的扩展名是 frm, 标准模块文件的扩展名是 bas。 (2)按钮的 Caption属性设置为 “保存 (&S)”。 (3)“放大 ”按钮单击事件过程中的程序代码: Imagel.Width=Imagel.Width*1.1 Imagel.Height=Imagel.Height*1.1 “缩小 ”按钮单击事件过程中 的程序代码: Imagel.Width=Imagel.Width*0.9 Imagel.Height=Imagel.Height*0.9 (4)将

46、该单选按钮的 Value属性值设置成 True (5)消息框的标题栏显示 “提示 ”;消息框中有一个出错标记以及两个命令按钮,分别显示 “确定 ”和 “取消 ”;消息框中显示的信息为 “非法操作 !”。 7 【正确答案】 (1)intcounter, 1 (2)intLen-intCounter+1 或 Len(Strdigit)-intCounter+1 (3)Right或 Right $ (4) txtNumber.Text (5) KeyAscii 【试题解析】 (1) (3)空所在语句块的功能是删除过滤数字串 Strdigit的前导 0。(1)空所在 DoLoop 循环是找到第一个非

47、0的位置,循环变量为 intcounter,即要判断第 intcounter个字符是不是 0,因此 (1)空处应填写 “intcounter,1”。从 (3)空所在语句可以判断 (2)空所在语句是求出过滤数字串 Strdigit的前导 0后的数字长度,因此 (2)空处应当填写 “intLen-intCounter+1”或 “Len(Strdigit)-intCounter+1”。(3)空所在语句是取出过滤数字串 Strdigit的前导。后的数字,需要填写这一操作的函数,因此 (3)空处应当填写 “Right”或 “Right $”。 (4)空处需要填写调用 Cchinese函数的参数,程序要对小写数字进行转换,其内容存放在文本框 txtNumber中,因此 (4)空处应当填写 “txtNumber.Text”。 (5)空所在语句是处理当前输入若

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

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

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