初级程序员下午试题模拟61 doc_h_第1页
初级程序员下午试题模拟61 doc_h_第2页
初级程序员下午试题模拟61 doc_h_第3页
初级程序员下午试题模拟61 doc_h_第4页
初级程序员下午试题模拟61 doc_h_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、初级程序员下午试题模拟61试题一 1、【算法说明】 某英汉词典文件包含N个记录(N1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。 本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。 【算法】 第一步 读入英汉词典文件,并将读入的N个英文单词依次存放在字符串数组ENG中,将相应的汉语解释依次存放在字符串数组

2、CN中。数组元素CN(i)给出了数组元素ENG(i)的解释。 第二步 输入英文单词及其汉语解释,将它们分别存放在字符串变量E和C中。若E为空串或都是空格,则转向第四步。 第三步 根据变量E的值,用二分法在数组ENG中查找。具体步骤如下: 11L,NH2INT(L+H)/2)K3. 若E=ENG(K),则CCN(K),转向第二步 若EENG(K),则K-1 (1) ;若EENG(K),则K+1 (2)4. 若HL则 对I=N,L,-1(始值,终值,增量)循环执行: ENG(I)ENG(I+1) CN(I)CN(I+1)然后,将E和C分别存入 (3) 和 (4) ,N+1N最后转向第二步否则,转向

3、 (5)第四步 将数组ENG和CN输出,形成新的英汉词典文件,算法结束。 试题二 说明函数void convert(char *a,int n)是用递归方法将一个正整数n按逆序存放到一个字符数组a中,例如n=123,在a中的存放为3、2、1。 函数2.1void convert(char *a,int n)int i;if(i=n/10)! =0)convert( 2 ,i);*a= 3 ;函数2.2说明函数int index(char *s,char *t)检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则返回-1。 函数2.2int index(char *s

4、, char *t)inti,j=0;k=0; for(i=0; si!=0;i+) for( 4 ;(tk!=0)(sj!=0) ( 5 );j+,k+); if( 6 )return(i);return(-1);试题三 7、【说明】 函数diff的功能是:根据两个由整数(都大于-32768)按升序构成的单链表L1和L2(分别由A, B指向)构造一个单链表L3(由*r指向),要求13中的所有整数都是L1,并且不是 L2中的整数,还要求L3中的所有整数都两两不等。 【函数】 #include malloc. h typedef struct node int d;struct node * n

5、ext Node;void diff(Node *A,Node * B,Node * * r)int lastnum;Node * p;*r = NULL;if( !A. return;while( (1) )if(A-d B -d)lastnum =A - d;p= ( Node * ) malloc( sizeof(Node) ); p-d = lastnum;p-next= *r; (2) ; doA = A - next; while( (3) );else if(A-d B-d) B=B- next;else (4) ;lastnum=A - d;while ( A & A-d =

6、= lastnum) A=A- next;whileA.lastnum=A-d;p=( Node * ) malloc( sizeof(Node) ); p- d = lastnum; (5) ;*r=p;while (A & A-d = = lastnum) A=A-next;试题四 8、【说明】 从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编写程序,其功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组XX 中, 最后调用函数WRITED

7、AT(),把结果XX输出到文件 OUT5.DAT中。 例如:原文:You can create an index on any field. you have the correct record.结果:n any field. Yu can create an index rd. yu have the crreet res原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。 【函数】 #include stdio.h #include string.h #include conio.h #include ctype.h #includemem.h unsigned ch

8、ar xx50 80 int maxline=0;int readdat(void); void writedat(void)*将题目要求的字符串中所有小写字母o左边的字符串内容移到谊串的右边存放,即将串中 “最后”一个字母o左右两侧的内容互换* void StrOR(void)inti;char*p1,* p2,t80; for(i=0;imaxline;i+)t0=/0;p2=xxi;while(*p2)/*找到最后一个别o*/if( (1) )p1=p2; p2+;strcat(t,p1+1);*p1=0; strcat(t,xxi); p1=xxi;p2=t;while(*p2)/*删

9、去字符o*/if( (2) ) (3) =*p2; p2+; (4) ;void main()clrscr();if(readdat()printf(Cant open the file IN. DAT!n); return; StrOR();writedat();int readdat(void)FILE * fp; int i=0; char * p;if(fp=fopen(in.dat,r )=NULL) return 1;while(fgets(xxi,80, fp)!=NULL)p=strchr(xxi,n); if(p)*p=0; i+;maxline: (5) ; fclose(

10、fp); return 0;void writedat (void)FILE * fp; int i;fp=fopen(in.dat,w); for(i=0;imaxline;i+)printf(%sn,xxi);fprintf(fp, %sn,xxi);fclose(fp);试题五 9、Vsual Basic 程序代码Private Sub CmdSelect_Cliek() For i = O To List2.ListCount - 1If Listl.Text = List2.List(i) Then Exit Sub不要重复选择Next iList2.Addltem (1) 在Lis

11、t2中增添List1中所选的项 End SubPrivate Sub CrndSelAll_Click()List2.Clear先删除List2中的 已有项 For i = 0 To(2)对List1中所有各项做循环处理 List2.Addltem(3)将该项增添到 List2中 Next i End SubPrivate Sub CmdDelete_Cliek()If List2.Listlndex = O Then如果List2中有选 中的项,List2.Removeltem(4)则删除所选的项 End If End SubPrivate Sub CmdDelAll_Cliek() (5)

12、End Sub答案:试题一 1、(1)H(2)L(3)ENG(L)或等价表达式 (4)CN(L)或等价表达式 (5)(2)解析 H,L分别是二分法查找的上界和下界,所以(1)和(2)应分别填入H,L。(3)和(4)处是将L 之后的元素依次后移以后,将E和C分别存入L处,所以(3)和(4)处应分别填入ENG(L)和CN(L)或其他等价表达式,比如ENG(H+1)。(5)处是HL,这说明查找表未空,需要转向(2)继续查找。 试题二 2、a+13、n%10+04、j=i,k=05、tk=sj6、tk=0或!tk解析 函数1采用递归方法将一个正整数n按逆序存放到一个字符数组a中,递归调用为conver

13、t(a+1,i),所以空(1)填a+1。按逆序输出字符保存在数组a中为*a_n%10+0,即空(2) 填n%10+0。 函数2检查字符串s中是否含有字符串t是在for循环中实现的。空(3)应填j=i,k=0。如果两个字符串中含有相同的字符,则字符串s和字符串t都指向下一个字符,循环继续,直到字符串t结束。所以空(4)应填tk=sj,空(5)应填tk=0或!tk。 试题三 7、(1)A&B(2)*r=p(3)A&A-d=lastnum (4)B=B-next(5)p-next=*r解析 函数的功能在函数说明中已经讲得很清楚了,这里就不再重复。程序的思路是:从链表A取一个元素和链表B中第一个元素进

14、行比较,如果链表A元素小于链表B的元素,则将链表A中元素插入到链表C中,指针后移,在后移时要 所有相同元素;如果链表A元素大于链表B的元素,将链表B 指针后移;如果链表A元素等于链表B的元素,链表A和链表B的指针都向后移,而且要 链表A中所有相同元素。当链表A和链表B都没有结束时,循环执行上述操作。如果链表B已经到链尾,但链表A 没有结束,则将链表A中的剩余元素加入到链表C中,同时也要所有相同元素。 根据上面的分析,(1)空处需要填写循环条件,显然是链表A没有结束,而且链表B也没有结束, 即“A!=NULL&B!=NULL”或其等价形式。 (2) 空所在的语句块是处理链表A元素小于链表B的元素

15、的情况,需要将链表A中元素插入到链表C中,在它的前一条语句已经把这个结点后继指针指向链表C的第一个结点,这里需要将链表C的第一个结点设置成该结点,即“*r=p”。 (3) 空处所在dowhile循环的目的是所有相同元素,需要写出这个循环的条件,显然是当一个结点的值不等于刚刚插入的结点的值或链表A已经到了链尾时就要退出循环。因此(3)空处应填写“A! =NULL&A-d=lastnum”及其等价形式。 (4) 空所在语句块是处理链表A元素等于链表B元素的情况,链表A和链表B的指针都向后移,而 且要链表A中所有相同元素。链表A的指针向后移已经写出,因此,(4)空应填写“B=B-next”。 (5)

16、 空所在while循环是处理链表B已经到链尾,但链表A没有结束的情况。这时需要将链表A中的剩余元素加入到链表C中,插入的方法和(2)空处所在语句块插入方法一致。(5)空需将要插入结 点的指针域指向链表C的头指针*r,因此(5)空处应填写“p-next=*r”。 试题四 8、(1) *p2=o(2) *p2!=o(3) *p1+(4) *p1=02 (5) i解析 在主函数中,首先调用函数READDAT(),从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中,用变量maxline表示文章的行数,所以(5)空应填入“i”。 函数STROR()的功能是将字符串中所有小写字母。左边的字符串内容

17、移到该串的右边存放,即先将串中“最后”一个字母。左右两侧的内容互换,再删去所有的小写字母o。第一个while()循环的作用是让p1指向最后一个字母o,所以(1)空应填入“*p2=o”。第一个stmat()函数的作用是将p1以后的字符都放到新串t中。第二个 strcat()函数的作用是将p1以前的字符连接到新串t 的后面(注意:在此之前要让p1所指的单元成为p1前面字符串的结束位置*p1=/0)。这时完成左右互换。最后个while()循环的作用是删除新串中的所有小写字母o,采用的删除方法是不是o 的字母一律留下,否则不留(即相当于删除),所以(2)空应填入“*p2!=o,而p1指向这一行的开始,

18、且每次赋值后值必须加1,所以(3)空应填入“* P1 +”。复制完所有不是o的字母后还要加一个字符串结束标记,所以(4)空应填入“* p1=0”。 最后通过调用函数WRITEDAT()把结果xx输出到文件中。 试题五 9、(1)Listl.Text(2) Listl.ListCount-(3) Listl.List(i)(4) List2.Lisfindex(5) List2.Clear解析 本题涉及常用的列表框技术。列表框常用的属性如下: ListCount列表框内的数据项个数List(o),List(1),. 列表框中从上到下各个数据项内容Text 列表框中当前选中的数据项内容 Listl

19、ndex列表框中当前选中的数据项的序号列表框常用的方法如下: AddItem列表框尾部增加一个数据项(参数给出数据项内容) RemoveItem列表框中删除指定的数据项(参数给出待删的数据项序号)Clear删除列表框中的全部数据项 本题中有两个列表框List1和List2,以及四个按钮。 按钮“”的功能是将列表框List1中选中的一个数据项复制到列表框List2的尾部。 List1中当前所选的数据项内容是List1.Text。为避免重复,在复制前,应先判断它是否已经位于List2 中。List2中,已有的数据项个数为List2.ListCount。各个数据项内容为: List2List(O), List2List(1),因此可以用循环语句来实现这种比较。如果发现重复,则退出该过程(不再复制)。将Listl.Text复制到List2的尾部,可以用如下语句实现: List2Addltem Listl,Text因此,(1)处应填写Listl.Text。 如果List1中没有选中任何数据项,则上述复制语句自动作为空语句执行。 注意,如果不修改列表框属性“MultiSelect”的默认值(O)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论