[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷32及答案与解析.doc
《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷32及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试(初级)程序员下午(应用技术)模拟试卷32及答案与解析.doc(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写入新串中,因此,此空
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 初级 程序员 下午 应用技术 模拟 32 答案 解析 DOC
