[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷33及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷33及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷33及答案与解析.doc(12页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 33及答案与解析 1 阅读下列说明和流程图,将应填入 (n)处的语句写在对应栏内。 【说明】 设学生(学生数少于 50人 )某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点 “.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组 B50中。 【流程图】 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【函数 1说明】 函数 palindrome(char s)的功能是:判断字符串 s是否为 回文字符串。若是,则返回 0,否则返回 -1。若一个字符串顺读和倒读都一样时,则可称该字符串是回
2、文字符串。例如, “LEVEL”是回文字符串,而 “LEVAL”不是。 【函数 1】 int palindrome(char s char *pi, *pj; pi=s; pj=s+strlen(s)-1; while(pi pj pj-; if(2)return-1; else return 0; 【函数 2说明】 函数 f(char *str, char del)的功能是:将非空字符串 str分割成若干个子字符串并输出, del表示分割时的标志字符。 例如,若 str的值为 “33123333435”, del的值为 “3”,调用此函数后,将输出三个子字符串,分别为 “12”、 “4”和
3、“5”。 【函数 2】 void f(char *str, char del) int i,j, len; len=strlen(str); i=0; while(i len) While(3) i+; /*忽略连续的标志字符 */ /*寻找从 stri开始直到标志字符出现的一个子字符串 */ j=i+1; while(strj!=del (4)=0; /*给找到的字符序列置字符串结束标志 */ printf(“%st“, (5); 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 本题中的函数 encode()和 decode()分别实现对字符串的变换和复
4、原。其中变换函数 encode()顺序考查已知字符串的字符,按以下规则逐组生成新字符串: (1)若已知字符串的当前字符不是数字字符,则将该字符复制在新字符串中。 (2)若已知字符串的当前字符是一个数字字符,且它之后没有 后继字符,则简单地将它复制到新字符串中。 (3)若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为 n,则将它的后继字符 (包括后继字符是一个数字字符 )重复复制 n+1次到新字符串中。 (4)以上述一次变换为一组,在不同组之间另插入一个下划线 “_”用于分隔。例如, encode()函数对字符串 26a3t2的变换结果为 666_a_tttt_2。
5、复原函数 decode()做与变换函数 encode()相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符 (不超过 10个 )变换成一个用于表示重复次数的数字符和一个重复出现的字符,并在复原过程中略过变换函数,为不同组之间添加的一个下划线字符。 假定调用变换函数 encode()时的已知字符串中不含下划线字符。 【函数】 int encode(char *instr, char *outstr) char *ip, *op, c; int k,n; ip=instr; op=outstr; while(*ip) if(*ip =0 c=(2); for(k=0; k n;k+)
6、*op+=c; else (3); *op+=_; ip+; if(op outstr)op-; (4); return op-outstr; int decode(char *instr, char *outstr) char *ip, *op, c; int n; ip=instr; op=outstr; while(*ip) c=*ip; n=0; while(*ip=c n+; if(5)*op+=0+n-1; *op+=c; if(6)ip+; *op=0; return op-outstr; 4 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 编写
7、程序,利用带参数的主函数 main(),实现二进制文件的复制。比如,若该程序已生成可执行文件 filebin.exe,在 DOS操作系统命令状态下键入如下命令行: filebin f0.fil f1.fil 则实现将已存在的二进制文件 f1.fil依原样复制给名为 f0.fil的二进制文件。 【函数】 #include stdio.h void fcopy(FILE *fout, FILE *fin) char k; do k=fgetc(1); if(feof(fin) break; fputc(2); while(1); void main(int argc,char *argv) FIL
8、E *fin,*fout; if(argc!=(3) return; if(fin=fopen(argv2,“rb“)=NULL) return; fout=(4); fcopy(5); fclose(fin); fclose(fout); 5 阅读以下说明,以及用 C+在开发过程中所编写的程序代码,将应填入 (n)处的字句写在对应栏内。 【说明】 冒泡排序算法,作为 Orderedlist T,size类的成员函数, last是有序表的元素个数。 template typename T,int size void Orderedlist T,size BubbleSort() bool no
9、swap; /交换标志 int i,j; T temp; for(i=0;i last;i+) noswap=(1); for(j=(2);(3);(4) /从下往上冒泡 if(slistj slistj-1) temp=slistj; slistj=slistj-1; slistj-1=temp; noswap=(5); if(noswap)break; 6 阅读以下说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 下面代码里, instr是一个抽象类,它被两个子类 wind和 rain分别实现,而 brass又继承了 wind类,并覆盖了 play方法。 【程序】 (
10、1) class instr (2) Void play(); class wind (3) instr void play()System.out.println(“wind play!“); class rain extends instr void play()System.out.println(“rain play!“); class brass extends (4) void play()System.out.println(“brass play!“); public class music static void tuneAll(instr e) for(int i=0;i
11、e.length;i+) ei.play(); public (5) void main(Stringargs) instr orch=new instr3; int i=0; orchi+=new wind(); orchi+=new rain(); orchi+=new brass(); tuneAll(orch); 软件水平考试(初级)程序员下午(应用技术)模拟试卷 33答案与解析 1 【正确答案】 (1)B0a (2)i0 (3)a=“.“ (4)a Bj (5)j- 【试题解析】 本题考查用程序流程图来描述排序。 题目要求将文件中学生的成绩读出,并把全部成绩从高到低排序到数组 B50
12、中。这里面涉及两个问题,第一是从文件中读数,文件中的数据是 以单行句点 “.”为结束符的,在未读到此符号前,应该将继续取数据。第二是排序,每取到一个学生的成绩都要与数组的学生成绩比较,按照从高到低的顺序在数组中找到合适的位置存放。下面来具体分析流程图。 第 (1)空在条件判断为假的情况下执行流程中,如果条件为假说明从文件中取到的数据是学生成绩。从程序流程图中可以看到,从文件中读的数据存放在变量 a中,而此空是第一次取数据,应该存放数组 B的第一个位置,因此此空答案为B0a 。 第 (2)空是紧接着第 (1)空来的,在上面已经把从文件中读到的第一个数存放到了数组中 ,接下来应该处理数组的下标问题
13、,从后面的流程中可以推断出变量 i是存放数组当前下标的,而且没有初值,那么此空的任务应该是用来给变量 i赋一个初值,而对数组的操作应该从头开始,因此此空答案为 i0 。 第 (3)空是循环的判断条件,如果条件成立则结束,在这之前又对文件进行了一次读数,根据我们上面的分析只有在读到了结束符时程序才结束,那么此空肯定是判断从文件中读到的数据是否为结束符,因此此空答案为 a=“.“?。 第 (4)空也是一个循环的判断条件,如果条件成立,则将取到的数存放到数组的当前下标位置;如果不成立 ,则循环找到合适的位置再存放。从这里我们不难推断出,流程图中是将从文件取到的成绩与当前数组中的最小成绩进行比较的,而
14、当前数组中的最小成绩存放在位置 j中,因此此空答案为 a Bi?。 第 (5)空在循环体中,这个循环的作用是为当前从文件中读到的成绩在已经排好序的数组元素中找到合适的位置,找到了就要插入,数组中的元素是按从大到小排列的,在查找合适位置时是从后往前依次比较,因此此空的任务应该是将数组的下标往前移动,所以此空答案为 “i-”。 2 【正确答案】 (1)*pi=*pi (2)pi pj或 *pi!=*pj (3)stri=del (4)strj (5)i=j+1 【试题解析】 本题考查在 C语言中对字符串的处理。 【函数 1】 使用数组 sn来存储一个字符串,因为要根据回文字符串的定义来判断一个串是
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 33 答案 解析 DOC
