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

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

1、软件水平考试(初级)程序员下午(应用技术)模拟试卷 32及答案与解析 1 阅读下列算法说明和算法,将应填入 (n)处的语句写在对应栏内。 【说明】 本程序可以将字符串 s1中出现的所有 s2子串替换成 s3,形成一个新串,但不破坏字符串 s1。 【代码】 #include stdio.h #include stdlib.h #include string.h char*replace(char *s1, char *s2,char *s3) char *p, *q, *r, *s; int |2, |3, i=0; |2=strlen(s2); |3=strlen(s3); p=s1; whi

2、le(p=strstr(p,s2)!=NULL) i+; /* 统计 s2串出现的次数 */ (1); i=(2); s=r=(char*)malloc(i); /*分配动态内 存存放新字符串 */ p=s1; while(1) q=strstr(p, s2); /* s2串是否在 s1中出现, q是首次出现的位置 */ if(q!=NULL) i=q-p; (3); r+=i; (4); r+=|3; p=q+|2; /*将指向 s1串的指针移到 s2子串出现的位置后, 为下一次循环做好准备 */ else /*q为空,表示剩余的 s1串中已经没有 s2*/ (5); break; /*终止

3、循环 */ return(s); /*返回指向所形成的新串的指针 */ void main() char *a=“sabcababde“, *b=“ab“, *c=“efg“, *d; d=replace(a, b, c); printf(“result=%sn“, d); free(d); 2 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 设有 n个人围坐一圈并按顺时针方向从 1到 n编号 ,从第 s个人开始进行 1到 m的报数,报数到第 m个人,则此人出圈,再从他的下一个人重新开始 1到 m的报数,如此进行下去,直到所有的人都出圈为止。 现要求按出圈次序

4、,每 10人一组,给出这 n个人的顺序表。 设 n=100, s=1, m=10。 (1)将 1到 n个人的序号存入一维数组 p中; (2)若第 i个人报数后出圈,则将 p置于数组的倒数第 i个位置上,而原来第 i+1个至倒数第 i个元素依次向前移动一个位置: (3)重复第 (2)步,直至圈中只剩下 p1为止。 #include stdio.h #define N 100 #define S 1 #define M 10 void main() int p100,n,s,m; m=M; n=N; s=S; int i,j,s1,w; s1=s; for(i=1;(1);i+) (2)=i; f

5、or(i=n;i =2;i-) s1=(3); if(s1=0)s1=i; w=(4); for(j=s1;j i;j+) pj-1=pj; pi-1=(5); printf(“%4d“,pi) 3 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 给定函数 fun的功能是:将从键盘上输入的每个单词的第一个字母转换为大写字母,输 入时各单词必须用空格隔开,用 “.”结束输入。 【函数】 int fun(char *c,int status) if(1)=) return 1; else if(2) return 0; main() int flag=1; cha

6、r ch; printf(“请输入一字符串,用点号结束输入 !n“); do ch=getchar(); flag=fun( putchar(ch); while(ch!=.); printf(“n“); 4 阅读以下函数说明和 C语言函数,将应填入 (n)处的字句写在对应栏内。 【说明】 编写程序,生成一个新文本 文件,它由一个已知文本文件的所有偶数行组成。要求已知文本文件名和新文本文件名均从键盘输入。请填空完善程序。 【 C语言程序】 #include stdio.h main() FILE *oldf,*newf; char ch,fname20; int i; do printf(“E

7、nter name of existed text file to be read:“); scanf(“%s“,fname); if(oldf=fopen(fname,“r“)=NULL) printf(“File %s cant open!n“,fname); while(oldf=NULL); do printf(“Enter mane of new text file to be written:“); scanf(“%s“,fname); if(1)=NULL) printf(“File %s cant open!n“,fname); while(2); i=1; while(!fe

8、of(oldf) while(ch=fgetc(oldf)!=(3) if(i%2=(4) fputc(ch,newf); fputc(n,newf); (5); fclose(oldf); fclose(newf); 5 阅读以下说明,以及用 C+在开发过程中所编写的程序代码,将应填入 (n)处的字句写在对应栏内。 【说明】 在矩形类中重载关系运算符 “ =”,采用友元,比较的依据是矩形面积的大小。重载算术运算符 “+=”,采用成员函数,更新矩形对象的长与宽,分别加上形参矩形的长与宽。重 载算术运算符 +,利用构造函数,采用友元。 【代码】 class Crect int length,wi

9、tdth; public; CRect(int l,int w) length=l; width=w; friend int operator =(CRect/比较面积 void operator+=(CRect/求长 (4);/求宽 friend operater+(CRect /利用构造函数 6 阅读以下说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 本程序根据 输入的月份数,输出它是哪个季节。 【代码】 import java.io.*; public class season public static void main(String args) String

10、 strln=“; (1) in=new InputStreamReader(System.in); BufferedReader buffln=new BufferedReader(in); System.out.print(“Please enter a month(1-12):“); try strln=buffln.readLine();/从命令行读入数据 catch(2) System.out.println(e.toStdng(); int month=(3)(strln);/将字符串转换成整数型 int season=0; if(month 12 /计算季节的公式 (4) (se

11、ason) case 1: System.out.println(“the season is Springl“); break; case 2: System.out.println(“the season is Summer!“); case 3: System.out.println(“the season is Fall!“); case 4: System.out.println(“the season is Winter!“); break; (5); System.out.println(“this is not correct month!“); 软件水平考试(初级)程序员下午

12、(应用技术)模拟试卷 32答案与解析 1 【正确答案】 (1)p+=12 (2)strlen(s1)-i*12+i*13+1 (3)strncpy(r,p,i) (4)strcpy(r,s3) (5)strcpy(r,p) 【试题解析】 本题考查用 C语言实现对字符串的操作。 题目要求将字符串 s1中出现的所有子串 s2替换成 s3,形成一个新串,但不破坏字符串 s1。要不破坏字符串 s1,只有用一个新串来存放处理结果;要用到新串,那么就需要重新分配空间。 第 (1)空在第 一个循环体中,此循环体的作用在注释中已经给出,用来统计串 s2在串 s1中出现的次数,这里的统计变量已经给出,并将结果存

13、放在统计变量 i中,但每次统计成功后串 s1的位置应该往后移动串 s2的长度,由程序我们可以看出,串 s1存放在指针变量 p中,因此,指针变量 p指的位置需要往后移动串 s2的长度,而串 s2的长度存放在变量 12中。因此,此空答案为 p+=12。 第 (2)空很明显是用来给变量 i赋一个值,但根据 s=r=(char*)malloc(i)语句我们可以推断出,当前变量 i中存放的是新串的长度。而新串的长度应该等于串 s1的长度减去串中 x个串 s2的长度,加上 x个串 s3的长度再加 1,而在上面的循环中已经求出了串 s2在串 s1中出现的次数,结果存放在变量 i中。因此,此空答案为strle

14、n(sl)-i*12+i*13+1。 第 (3)空是在 if(q !=NULL)成立的情况下运行的语句,而变量 q指向的是 s2在 s1中首次出现的位置,如果条件成立,说明串 s2在串 s1中出现了,语句 i=q-p用来表示出现的位置到 s1开始位置的距离。在这些条件都清楚了后,应该往新的串中写字符了,首先写串 s1的前 i个字符,此空就是用来完成这个功能的,因此,此空答案为 strncpy(r,p,i)。 第 (4)空是接着上一空而来的,在上面我们 分析 到,把串 s1的前 i个字符写入新串,那么在新串中接着要出现的应该是替换串 s2的串 s3,此空的任务应该是将串s3写入新串中,因此,此空

15、答案为 strcpy(r,s3)。 第 (5)空是在 if(q !=NULL)不成立的情况下运行的语句,这说明串 s2不在串 s1中出现,在这种情况下,串应该不需要进行替换操作,而直接将串 s1写入到新串中,此空的作用就是用来实现这个功能的,因此,此空答案为 strcpy(r,p)。 2 【正确答案】 (1)i =n (2)pi-1 (3)(s1+m-1)%i (4)ps1-1 (5)w 【试题解析】 题目中给出了 n个人出圈问题的具体实现方法,要求用 C语言来实现,结合题目中给出的方法,我们来具体分析程序。 第 (1)空是循环的判断条件,根据题目的要求和程序来看,这个循环应该用来把 n个人的

16、编 号存放到数组 p中,总共是 n个人,那么循环上界应该是 n,从程序中可以知道循环变量是 i,因此此空答案为 i =n。 第 (2)空在循环体中,从上面的分析已经知道,这个循环实现将 n个人的编号存放到数组 p中,第一个人的编号应该存放到数组下标为 0的位置,而第二个人的编号就存放到数组下标为 1的位置,依此类推。因此此空答案为 pi-1。 第 (3)空在另一个循环体中,结合整个程序来看,不难推断出此循环体应该用来实现题目中的第二个与第三个要求。此空是用来给变量 s1赋一个值,从后面的程序中可以推断出,变量 s1中存放的 是判断当前报数的人是否该出圈,如果为 0,则出圈,因此此空答案为 (s

17、1+m-1)%i。 第 (4)空是给一个变量 w赋一个值,从此空上面的程序我们知道找到了要出圈的人,根据题目要求,应将出圈人的编号置于数组的倒数第 i个位置上,在将其存放到倒数第 i个位置时肯定要移动数组中的元素,而元素的移动是以当前位置为前提的,那么需要将当前位置人的编号先保存到变量 w中,而当前位置人的编号存放在数组, ps1-1中,因此此空答案为 ps1-1。 第 (5)空很明显是给 pi-1赋一个值,而 pi-1正好是数组的倒 数第 i个位置,应该用来存放当前出圈人的编号,而编号在变量 w中,因此此空答案为 w。 3 【正确答案】 (1)*c (2)status (3)*c =z (4

18、)*c =a (5)*c+ 【试题解析】 本题考查在 C语言中对字符串的处理。 题目要求程序将从键盘上输入的每个单词的第一个字母转换为大写字母,而输入的各单词必须用空格隔开,用 “.”结束输入。要实现这个功能,关键之一在于如何取出单词中的第一个字母,关键之二是如何实现大小写字母的转换。 第 (1)空是一个条件判断语 句的条件,如果条件成立,则返回 1,而从程序中可以看出,此条件判断语句是判断当前取到的字符是否等于空格字符。从主函数中可以看到,每次在调用功能函数 fun()前都从输入的字符串中取出一个字符,并存放在变量 ch中,而在调用函数时是将变量 ch的地址传递给了指针变量 c,因此此空的答

19、案为 *c。 第 (2)空、第 (3)空和第 (4)空应该结合起来看,它们都是条件判断语句的条件,这个条件判断语句下面的程序是将一个小写字母改变成一个大写字母,根据题目要求,此条件判断语句的条件应该是判断当前取到的字母是一个单词的第一个字母且 是一个小写字母,再结合主函数来看,我们不难发现单词的第一个字母用一个标记变量 flag标识,如果是第一个字母,这个标记变量 flag的值为 1,否则为 0。要判断一个字母是否是小写字母,应该判断其 ASC 码值是否在 a与 z的 ASC码值之间。所以这 3个空的答案应该分别为 status、 *c =z、 *c =a。 第 (5)空是在上面条件成立的情况

20、下执行的一条语句,条件成立我们在上面已经分析过了,表明当前取到的字符是一个单词的第一个字母且是小写字母,此空所在语句的任务是将小写字母变成大写字母,根据上面的分析,因 此可以得到此空答案为 *c+。 4 【正确答案】 (1)newf=fopen(fname,“w“) (2)newf=NULL (3)n (4)0 (5)i=i+1(或 i+) 【试题解析】 本题考查用 C语言实现对文本文件的操作。 题目要求程序生成一个新文本文件,它的内容由一个已知文本文件的所有偶数行组成,而已知文本文件名和新文本文件名均从键盘输入,题目的关键在于对文件的操作。下面来具体分析代码。 第 (1)空在一个循环体中,是

21、条件判断语句的条件,此循环的作用我们不 难从程序中看出,是用来打开新文本文件的,在 C语言中要打开一个文件应该用函数fopen(),它的两个参数分别是其文件名和对文件操作的属性,根据题目意思,对这个文件的操作只有写操作。因此,此空答案为 newf=fopen(fname,“w“)。 第 (2)空是一个循环的判断条件,上面我们已经分析了该循环的作用,是用来打开新文本文件的,结合第一个文件的打开程序,我们很容易发现此空的答案为newf=NULL。 第 (3)空是一个二重循环第二层循环的判断条件,这个二重循环的作用是用来实现将已知文本文件的所有偶 数行内容写到新文件中,这里需要注意每次取到的内容都是

22、偶数行的内容,在对已知文本文件进行取内容时是逐行取的,那么条件判断语句是用来判断是否取完了一行内容,在 C语言中,一般用换行符 n来标志一行的结束,因此此空答案为 n。 第 (4)空是循环下条件判断语句的条件,根据题目要求可以知道每次对新文件进行写的数据都是已知文本文件的偶数行的内容,那么在写之前应该首先判断内容是否是偶数行的内容。此空所在语句就是用来实现这一功能的,而偶数对 2取余的结果都为 0,因此此空答案为 0。 第 (5)空是二重循环的最后 一条语句,在上面的空中我们已经分析到,在对新文件进行写内容时要首先判断其内容所在行是否为偶数行,而当前行号存放在变量 i中,整个程序都没有改变变量

23、 i的值,那么此空应该是用来改变变量 i的值的,因此此空答案为 i+。 5 【正确答案】 (1)r1.length*r1.width (2)r1.length*r1.width (3)length+=r.length (4)width+=r.width (5)r1.length+r2.length,r1.width+r2.width 【试题解析】 本题考查 C+中的函数重载与友元。 题目要求在矩形类中采用友元重载关系运算符 “ =”,比较的依据是矩形面积的大小;采用成员函数重载算术运算符 “+=”来更新矩形对象的长与宽,其功能是分别加上形参矩形的长与宽;重载算术运算符 “+”,利用构造函数,也

24、采用友元的方式。首先我们要了解一下友元的作用。 需要在类的外部直接访问类的私有数据成员,在不改变类的数据成员安全性的前提下,使得类外部的函数或类能够访问类中的私有成员数据,这一功能可以通过友元的方式来实现。下面来具体分析程序。 第 (1)空与第 (2)空 要结合起来完成,它们是重载关系运算符 “ =”的两个操作数,而根据题目要求,这个关系运算符的比较依据是矩形面积的大小,求矩形的面积是通过矩形的长和宽来实现的,这个函数的参数是两个矩形类对象,在定义矩形类时,分别把矩形的长和宽定义成了默认的私有成员变量。根据程序中函数的定义可以知道,这个函数被定义为友元函数,可以访问矩形类中的私有成员变量,因此

25、这两个空的答案分别是用对象的长和宽计算其面积,即答案分别为r1.length*r1.width与 r2.length*r2.width。 第 (3)空与第 (4)空要结合 起来完成,它们是重载算术运算符 “+=”函数下面的操作,根据题目要求,这个算术运算符的作用是用来根据形参矩形的长与宽更新该矩形对象的长与宽,是该矩形对象的长与宽分别加上形参矩形对象的长与宽,根据注释,第 (3)空用来更新其长,因此此空答案为 length+=r.length;而第 (4)空用来更新其宽,因此答案为 width+=r.width。 第 (5)空在重载算术运算符 “+”的函数下面,根据题目要求,此函数的实现是利用

26、矩形类的构造函数和友元共同实现的。从程序中可以明显知道,此空是构造函数的参数,而构造函数的 两个参数分别是矩形的长与宽。算术运算符 “+”的作用我们大家也都非常熟悉,是用来计算两个操作数的和。重载算术运算符 “+”的函数参数是两个矩形对象,那么构造函数中的两个参数应该分别是这两个矩形对象的长与宽的和。所以此空答案为 r1.length+r2.length, r1.width+r2.width。 6 【正确答案】 (1)InputStreamReader (2)IOException e (3)Integer.parseInt (4)switch (5)default 【试题解析】 本题考查 J

27、ava的基本语法知识与简单的算法实现。 题目要求用 Java语言实现根据输入的月份数,确定并输出这个月份的季节,这个算法应该是不难的,下面来具体分析程序。 第 (1)空很明显是定义一个变量 in,它指向一个 InputStreamReader类型的对象,那么这个变量 in一定是一个。 InputStreamReader类型的。因此,此空答案为 InputStreamReader。 第 (2)空是 catch的参数,在 Java中,一般用 try与 catch结合起来使用,用来处理异常,其执行过程是先执行 try函数体,发现异常才执行 catch。从程序中可以知道, try的作用是从命令行读入数

28、据,是一种输入操作,因此产生的应该是 I/O异常,那么 catch的参数应该是 IOException e,所以此空答案为IOException e。 第 (3)空是给对象 in的 month属性赋一个值,这行语句的功能注释已经给出,是将字符串转变成整数型,这需要用到整型类的 parseInt方法,因此,此空答案为 Integer.parseInt。 第 (4)空很明显是一个函数名,结合题目要求与程序,不难推断出这个函 数的功能是用来输出计算得到的季节,而从后面的程序中可以看出这是个选择执行函数,那么这个函数的函数名应该是 switch,因此,此空答案为 switch。 第 (5)空是在选择执行函数的最后面,在 4种情况都考虑了之后,它考虑的应该是在匹配没有成功的条件下程序执行的情况,在多分支选择结构中,如果匹配不成功,则执行 default后面的语句,因此,此空答案为 default。

展开阅读全文
相关资源
猜你喜欢
  • ANSI INCITS ISO IEC 7816-2-1999 Information technology Identification cards Integrated circuit(s) cards with contacts Part 2 Dimensions and location of the contacts.pdf ANSI INCITS ISO IEC 7816-2-1999 Information technology Identification cards Integrated circuit(s) cards with contacts Part 2 Dimensions and location of the contacts.pdf
  • ANSI INCITS ISO IEC 7816-3 AMD 1-2002 Information technology - Identification cards - Integrated circuit(s) cards with contacts - Part 3 Electronic signals and transmission protoco.pdf ANSI INCITS ISO IEC 7816-3 AMD 1-2002 Information technology - Identification cards - Integrated circuit(s) cards with contacts - Part 3 Electronic signals and transmission protoco.pdf
  • ANSI INCITS ISO IEC 7816-3-1997 Information technology - Identification cards - Integrated circuit(s) cards with contacts - Part 3 Electronic signals and transmission protocols.pdf ANSI INCITS ISO IEC 7816-3-1997 Information technology - Identification cards - Integrated circuit(s) cards with contacts - Part 3 Electronic signals and transmission protocols.pdf
  • ANSI INCITS ISO IEC 7816-4-2013 Identification cards - Integrated circuit cards - Part 4 Organization security and commands for interchange.pdf ANSI INCITS ISO IEC 7816-4-2013 Identification cards - Integrated circuit cards - Part 4 Organization security and commands for interchange.pdf
  • ANSI INCITS ISO IEC 7816-5-1994 Identification cards - Integrated circuit(s) cards with contacts - Part 5 Numbering system and registration procedure for application identifiers.pdf ANSI INCITS ISO IEC 7816-5-1994 Identification cards - Integrated circuit(s) cards with contacts - Part 5 Numbering system and registration procedure for application identifiers.pdf
  • ANSI INCITS ISO IEC 7816-6 AMD 1-1996 Identification cards - Integrated circuit(s) cards with contacts - Part 6 Interindustry data elements AMENDMENT 1  IC manufacturer registratio.pdf ANSI INCITS ISO IEC 7816-6 AMD 1-1996 Identification cards - Integrated circuit(s) cards with contacts - Part 6 Interindustry data elements AMENDMENT 1 IC manufacturer registratio.pdf
  • ANSI INCITS ISO IEC 7816-6-1996 Identification cards - Integrated circuit(s) cards with contacts - Part 6 Interindustry data elements (Adopted by INCITS).pdf ANSI INCITS ISO IEC 7816-6-1996 Identification cards - Integrated circuit(s) cards with contacts - Part 6 Interindustry data elements (Adopted by INCITS).pdf
  • ANSI INCITS ISO IEC 7816-7-1999 Identification cards Integrated circuit(s) cards with contacts Part 7 Interindustry commands for Structured Card Query Language (SCQL).pdf ANSI INCITS ISO IEC 7816-7-1999 Identification cards Integrated circuit(s) cards with contacts Part 7 Interindustry commands for Structured Card Query Language (SCQL).pdf
  • ANSI INCITS ISO IEC 7816-8-1999 Identification cards Integrated circuit(s) cards with contacts Part 8 Security related interindustry commands.pdf ANSI INCITS ISO IEC 7816-8-1999 Identification cards Integrated circuit(s) cards with contacts Part 8 Security related interindustry commands.pdf
  • 相关搜索

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

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