2010年下半年程序员下午试卷

考试总分:6分

考试类型:模拟试题

作答时间:60分钟

已答人数:967

试卷答案:有

试卷介绍: 2010年下半年程序员下午试卷

开始答题

试卷预览

  • 1. 试题二(共15分)阅读以下说明和C函数,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。【说明1】函数deldigit(char*s)的功能是将字符串s中的数字字符去掉,使剩余字符按原次序构成一个新串,并保存在原串空间中。其思路是:先申请一个与s等长的临时字符串空间并令t指向它,将非数字字符按次序暂存入该空间,最后再拷贝给s。【C函数】voiddeldigit(char*s){char*t=(char*)malloc((1));/*申请串空间*/inti,k=0;if(!t)return;for(i=0;i='0'&&*(s+i)<='9')){t[k++]=(2);}(3)='\0';/*设置串结束标志*/strcpy(s,t);free(t);}【说明2】函数reverse(char*s,intlen)的功能是用递归方式逆置长度为len的字符串s。例如,若串s的内容为“abcd”,则逆置后其内容变为“dcba”。【C函数】voidreverse(char*s,intlen){charch;if((4)){ch=*s;*s=*(s+len-1);*(s+len-1)=ch;reverse((5));}}[15分]
  • 2. 试题三(共15分)阅读以下说明和C代码,回答问题1和问题2,将解答写在答题纸的对应栏内。【说明1】下面代码的设计意图是:将保存在文本文件data.txt中的一系列整数(不超过100个)读取出来存入数组arr[],然后调用函数sort()对数组arr的元素进行排序,最后在显示屏输出数组arr的内容。【C代码】【问题1】(9分)以上C代码中有三处错误(省略部分的代码除外),请指出这些错误所在的代码行号,并在不增加和删除代码行的情况下进行修改,写出修改正确后的完整代码行。【说明2】下面是用C语言书写的函数get_str的两种定义方式以及两种调用方式。【问题2】(6分)若分别采用函数定义方式1、2和调用方式1、2,请分析程序的运行情况,填充下面的空(1)~(3)。若采用定义方式1和调用方式1,则输出为“00000000”。若采用定义方式1和调用方式2,则(1)。若采用定义方式2和调用方式1,则(2)。若采用定义方式2和调用方式2,则(3)。[15分]
  • 3. 试题四(共15分)阅读以下说明和C函数,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。【说明】已知单链表L含有头结点,且结点中的元素值以递增的方式排列。下面的函数DeleteList在L中查找所有值大于minK且小于maxK的元素,若找到,则逐个删除,同时释放被删结点的空间。若链表中不存在满足条件的元素,则返回-1,否则返回0。例如,某单链表如图4-1所示。若令minK为20、maxK为50,则删除后的链表如图4-2所示。链表结点类型定义如下:typedefstructNode{intdata;structNode*next;}Node,*LinkList;【C函数】intDeleteList(LinkListL,intminK,intmaxK){/*在含头结点的单链表L中删除大于minK且小于maxK的元素*/(1)*q=L,*p=L->next;/*p指向第一个元素结点*/intdelTag=0;while(p)if(p->datadatanext=(3);free(p);p=(4);delTag=1;}elsebreak;if((5))return-1;return0;}[15分]
  • 4. 试题五(共15分)阅读以下说明和C++代码,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。【说明】某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。【C++代码】#include#include#includeusingnamespacestd;classStudent{private:stringsNO;//学号intcredit;//分数public:Student(stringa,intb){sNO=a;credit=b;}Student(){}intgetCredit();voidout();};(1)::getCredit(){returncredit;}(2)::out(){cout<<"SNO:"<<sNO<<",Credit="<<credit<<endl;}classSortStudent{public:voidsort(Student*s,intn);SortStudent(){}};voidSortStudent::sort(Student*s,intn){for(inti=0;i<n-1;i++){for(intj=i+1;j<n;j++){if(s[i].(3)<s[j].(4)){Studenttemp=s[i];s[i]=s[j];s[j]=temp;}}}}intmain(intargc,char*argv[]){constintnumber=100;//学生总数ifstreamstudents;students.open("students.txt");if(!students.is_open()){throw0;}Student*testStudent=(5)[number];intk=0;strings;while(getline(students,s,'\n')){//每次读取一个学生的学号和成绩Studentstudent(s.substr(0,s.find(',')),atoi(s.substr(s.find(',')+1).c_str()));testStudent[k++]=student;}students.close();(6);ss.sort(testStudent,k);cout<<"top30%:"<<endl;for(k=0;k<number*0.3;k++){testStudent[k].out();}delete[]testStudent;return0;}[15分]
  • 5. 试题六(共15分)阅读以下说明和Java代码,将应填入(n)处的语句或语句成分写在答题纸的对应栏内。【说明】某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前30%的学生。【Java代码】importjava.io.*;classStudent{privateStringsNO;//学号privateintCredit;//分数publicintgetCredit(){returnCredit;}publicStringtoString(){return"sNO="+this.sNO+",Credit="+this.Credit;}Student(StringsNO,intCredit){(1)=sNO;(2)=Credit;}}publicclassSortStudent{voidsort(Student[]s){//Sortthearrays[]indecendingorderofCreditfor(inti=0;i<s.length-1;i++){for(intj=i+1;j<s.length;j++){if(s[i].(3)<s[j].(4)){Studenttmp=s[i];s[i]=s[j];s[j]=tmp;}}}}publicstaticvoidmain(Stringargv[]){Student[]testStudent=newStudent[size];try{BufferedReaderin=newBufferedReader(newFileReader("students.txt"));booleandone=false;inti=0;while(!done){Strings=in.readLine();//每次读取一个学生的学号和成绩if(s!=null){Stringtmp[]=s.split(",");testStudent[i++]=(5)(tmp[0],Integer.parseInt(tmp[1]));}elsedone=true;}in.close();(6)=newSortStudent();ss.sort(testStudent);System.out.println("top30%:");for(intj=0;j<size*0.3;j++)System.out.println(testStudent[j]);}catch(IOExceptione){System.out.println("ioerror!");}catch(NumberFormatExceptione){System.out.println("notanumber!");}}(7)intsize=100;//学生总数}[15分]
  • 6. 试题一(共15分)阅读以下说明和流程图,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】下面的流程图中有两个判断条件A>0和B>0。这些判断条件的各种组合情况如下表所示。表中Y表示相应的条件成立,N表示相应的条件不成立。每一列表示一种条件组合,并在列首用相应的序号来表示。【流程图】【问题1】(4分)当遇到哪几种条件组合时,流程图能执行“1→i”?(写出相应的序号即可)【问题2】(4分)当遇到哪几种条件组合时,流程图能执行“2→j”?(写出相应的序号即可)【问题3】(6分)当遇到哪几种条件组合时,流程图能执行“3→k”?(写出相应的序号即可)【问题4】(1分)该流程图共有多少条实际执行路径?[15分]
相关试卷
相关题库