一起答

软件水平考试(初级)程序员下午(应用技术)模拟试卷33

  • 卷面总分:75分
  • 浏览次数:0
  • 测试费用:免费
  • 答案解析:是
  • 练习次数:6次
  • 作答时间:150分钟
试卷简介
部分试题预览
  1. 阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内。

      【说明】

     下面代码里,instr是一个抽象类,它被两个子类wind和rain分别实现,而brass又继承了wind类,并覆盖了play方法。

     【程序】

      (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<e.length;i++)

           e[i].play();

       }

       public (5) void main(String[]args){

         instr orch[]=new instr[3];

         int i=0;

         orch[i++]=new wind();

         orch[i++]=new rain();

         orch[i++]=new brass();

         tuneAll(orch);

       }

     }

  2. 阅读以下说明,以及用C++在开发过程中所编写的程序代码,将应填入(n)处的字句写在对应栏内。

      【说明】

     冒泡排序算法,作为Orderedlist<T,size>类的成员函数,last是有序表的元素个数。

     template<typename T,int size>void Orderedlist<T,size>∷BubbleSort(){

       bool noswap;  //交换标志

       int i,j;

       T temp;

       for(i=0;i<last;i++)

       {

         noswap=(1);

         for(j=(2);(3);(4))

         {//从下往上冒泡

           if(slist[j]<slist[j-1])

           {

             temp=slist[j];

             slist[j]=slist[j-1];

             slist[j-1]=temp;

             noswap=(5);

           }

         }

         if(noswap)break;

       }

     }

  3. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

      【说明】

     编写程序,利用带参数的主函数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[])

       {

         FILE *fin,*fout;

         if(argc!=(3))

           return;

         if((fin=fopen(argv[2],"rb"))==NULL)

           return;

       fout=(4);

       fcopy((5));

       fclose(fin);

       fclose(fout);

     }

  4. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

      【说明】

     本题中的函数encode()和decode()分别实现对字符串的变换和复原。其中变换函数encode()顺序考查已知字符串的字符,按以下规则逐组生成新字符串:

     (1)若已知字符串的当前字符不是数字字符,则将该字符复制在新字符串中。

     (2)若已知字符串的当前字符是一个数字字符,且它之后没有后继字符,则简单地将它复制到新字符串中。

     (3)若已知字符串的当前字符是一个数字字符,并且还有后继字符,设该数字字符的面值为n,则将它的后继字符(包括后继字符是一个数字字符)重复复制n+1次到新字符串中。

     (4)以上述一次变换为一组,在不同组之间另插入一个下划线“_”用于分隔。例如,encode()函数对字符串26a3t2的变换结果为666_a_tttt_2。

     复原函数decode()做与变换函数encode()相反的工作。即复制不连续相同的单个字符,而将一组连续相同的字符(不超过10个)变换成一个用于表示重复次数的数字符和一个重复出现的字符,并在复原过程中略过变换函数,为不同组之间添加的一个下划线字符。

     假定调用变换函数encode()时的已知字符串中不含下划线字符。

     【函数】

     int encode(char *instr, char *outstr){

       char *ip, *op, c; int k,n;

       ip=instr; p=outstr;

       while(*ip){

         if(*ip>='0' && *ip<='9' && *(ip+1)){

           n=(1);

           c=(2);

           for(k=0; k<n;k++)

             *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; p=outstr;

       while(*ip){

         c=*ip; n=0;

         while(*ip==c&&n<10){

           ip++; n++;

         }

         if((5))*op++='0'+n-1;

         *op++=c;

         if((6))ip++;

       }

       *op='\0';

       return op-outstr;

     }

  5. 阅读下列说明和流程图,将应填入(n)处的语句写在对应栏内。

      【说明】

     设学生(学生数少于50人)某次考试的成绩按学号顺序逐行存放于某文件中,文件以单行句点“.”为结束符。下面的流程图用于读取该文件,并把全部成绩从高到低排序到数组B[50]中。

     【流程图】

  6. 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

      【函数1说明】

     函数palindrome(char s[])的功能是:判断字符串s是否为回文字符串。若是,则返回0,否则返回-1。若一个字符串顺读和倒读都一样时,则可称该字符串是回文字符串。例如,“LEVEL”是回文字符串,而“LEVAL”不是。

     【函数1】

     int palindrome(char s[]{

       char *pi, *pj;

       pi=s; pj=s+strlen(s)-1;

       while(pi<pj&&(1)){

         pi++; pj--;

       }

       if((2))return-1;

       else return 0;

     }

     【函数2说明】

     函数f(char *str, char del)的功能是:将非空字符串str分割成若干个子字符串并输出,del表示分割时的标志字符。

     例如,若str的值为“33123333435”,del的值为“3”,调用此函数后,将输出三个子字符串,分别为“12”、“4”和“5”。

     【函数2】

     void f(char *str, char del){

       int i,j, len;

       len=strlen(str);

       i=0;

       while(i<len){

         While((3))  i++;   /*忽略连续的标志字符*/

         /*寻找从str[i]开始直到标志字符出现的一个子字符串*/

         j=i+1;

         while(str[j]!=del && str[j]!='\0')j++;

          (4)='\0';  /*给找到的字符序列置字符串结束标志*/

         printf("%s\t",&str[i]);

          (5);

       }

     }