一起答

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

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

      【说明】

      IC卡和200卡都是从电话卡派生的。下面的程序将电话卡定义为抽象类。其中 balance为双精度变量,代表电话卡中的余额;cardNumber是长整型变量,代表电话卡的卡号;password是整型变量,代表电话卡的密码;connectNumber是字符串变量,代表电话卡的接入号码;connected是布尔变量,代表电话是否接通。

     performDial()实现各种电话接通后的扣除费用的操作。其中200卡每次通话扣除0.5元的通话费用和附加费用;IC卡每次通话扣除0.9元的通话费。TimeLeft()方法用于测试电话卡余额还可以拨打电话的次数。performConnection()用于电话接入操作,如果卡号和密码正确,则接通;否则,接不通。

     【程序】

     abstract class PhoneCard

     {

       doubte balace;

        (1) perfermDial();

       double getBalance()

       { return balance; }

       double TimeLeft()

       {

         double current=balance;

         int times=0;

         do

         {

            (2) 

           times++;

         }white(balance>=0);

     balance=current;

     return times-1;

       }

     }

     abstract class Number_PhoneCard extends PhoneCard

     {

       long cardNumber:

       int password;

       String connectNumber;

       Boolean connected;

       Boolean performConnection(long cn, int pw)

     {

       if(cn==cardNumber && (3) )

       {

         connected=true;

         return true;

       }

       else return false;

    }  

    }

     class IC Card (4) 

     {

       boolean performDial()

       {

         if(balance>0.9)

         {

           balance-=0.9;

           return true;

         }

         else return false;

     }

     }

     class D200_Card (4) 

     {

       static double additoryFee;

       static{ additoryFee=0.1; }

       boolean performDial()

       {

         if(balance>(0,5+additeryFee))

         {

            (5) 

           return true;

         }

         else return false;

       }

     }

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

     【说明】

     魔方阵,又叫幻方,在我国古代称为“纵横图”。由1…N2共N2个自然数构成每行、每列及两对角线上各数之和都相等的N×N方阵,这样的方阵就叫做N阶魔方阵。顾名思义,奇阶魔方阵就是N为奇数的幻方。

     奇数阶魔方阵的生成方法如下:

     (1)第一个位置在第一行正中。

     (2)新位置应当处于最近一个插入位置右上方,但如果右上方位置已超出方阵上边界,则新位置取应选列的最下一个位置;如果超出右边界,则新位置取应选行的最左一个位置。

     (3)若最近一个插入元素为N的整数倍,则选下面一行同列上的位置为新位置。本题要求输入一个数据n,然后打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。例如,当n=3时,魔方阵为:

                 8  1  6

                 3  5  7

                 4  9  2

     了解其生成方法后,就可以根据此方法来写出程序了。首先设置int变量i,j,m, n。其中i标记魔方阵的行;j标记魔方阵的列;n表示魔方阵的维数,通过输入得到;通过m递加得到插入的数据。数组a[MAX][MAX]用于存放魔方阵元素。这里预定义了 MAX的大小,没有采用动态分配,在此设置为15,即最大求得15×15阶魔方阵。

     【程序】

      #include <stdio.h>

     #define MAX 15

     void main()

     {

       int n;

       int m=1;

       int i,j;

       int a[MAX][MAX];

       printf("Please input the rank of matrix:");

       scanf("%d",&n);

       i=0;

        (1) 

       while((2))

          a[i][j]=m;

          m++;

          i--;

          j++;

          if((m-1)%n==0 && m>1)

          {

              (3) 

             j=j-1;

          }

          if(j>(n-1))   //超出上界

             (4) 

          if(j>(n-1))

              (5) 

       }

       for(i=0;i<n;i++)       //输出魔方阵

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

       {

         if(a[i][j]/10==0)

           printf("%d ",a[i][j]); //对程序无影响,只是使输出的数每一列对齐

         else

           printf("%d ",a[i][j]);

         if(j==(n-1))

           printf("\n");

       }

     }

  3. 阅读以下说明和C++程序,将应填入(n)处的字句写在答题纸的对应栏内。

     【说明】

     本程序用于评选优秀教师和学生。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。其类结构如下图所示:

      

     【程序】

     #include <iostream.h>

     #include <stdio. h>

     class base

     {

     protected:

       char name[8];

     public:

      void getname(){cout<<"name:"; cin>>name;}

      void printname(){cout<<"name:"<<name<<endl;}

       (1) 

     };

     class student: (2) 

     {

       int num;

     public: 

       void getnum()

       {cout<<"score:"; cin>>num;}

       bool isgood()

       {return (3) }

     };

     class teacher: (2) 

     {

       int num;

     public:

       void getnum()

       {cout<<"paper:"; cin>>num;}

       bool isgood()

       {return (num>3)?true:false;}

     void main()

     {

       base *p[50];

       student *pstud;

       teacher *ptech;

       char ch;

       int count=0;

       do{

          cout<<"input teacher(t) or student(s):";

          cin>>ch;

          if(ch=='s')

          {

             pstud=new student;

             pstud->getname();

             pstud->getnum();

             p[count++]=pstud;

          }

          else if(ch=='t')

          {

             (4) 

             ptech->getname();

             ptech->getnum();

             p[count++]=ptech;

          }

         else

           cout<<"input is wrong"<<endl;

         cout<<"continue to iput(y/n)?";

         cin>>ch;

       }while(ch=='y');

       for(int i=0;i<count;i++)

         if((5))

           p[i]->printname();

     }

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

     【说明】

     以字符流形式读入一个文件,从文件中检索出6种C语言的关键字,并统计、输出每种关键字在文件中出现的次数。本程序中规定:单词是一个以空格或'\t'、'\n'结束的字符串。其中6种关键字在程序中已经给出。

     【程序】

     #include <stdio.h>

     #include <stdlib.h>

     FILE *cp;

        char fname[20], buf[100];

     int NUM;

     struct key

     {  char word[10];

        int count;

     }keyword[]={ "if", 0, "char", 0, "int", 0,

         "else", 0, "while", 0, "return", 0};

     char *getword (FILE *fp)

     {  int i=0;

        char c;

        while((c=getc(fp))!= EOF &&(1));

        if(c==EOF)

          return (NULL);

        else

          buf[i++]=c;

        while((c=fgetc(fp))!=EOF && c!="&& c!='\t' && c!='\n' )

            buf[i++]=c;

         buf[i]='\0';

         return(buf);

     }

     void lookup(char *p)

     {  int i;

        char *q, *s;

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

        { q=(2);

          s=p;

          while(*s && (*s==*q))

          { (3))

          if((4))

          {  keyword[i].count++;

            break;

          }

       }

       return;

     }

     void main()

     {  int i;

        char *word;

        printf("lnput file name:");

        scanf("%s", fname);

        if((cp=fopen(fname, "r"))==NULL)

        {  printf("File open error: %s\n", fname);

          exit(0);

        }

        NUM=sizeof(keyword)/sizeof(struct key);

        while((5))

          lookup(word);

     fclose(cp);

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

       printf("keyword:%-20s count=%d\n",keyword[i].word,keyword[i].count);

     }

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

    【函数2.1说明】

     递归函数sum(int a[], int n)的返回值是数组a[]的前n个元素之和。

     【函数2.1】

      int sum (int a[],int n)

     {

      if(n>0) return (1);

      else (2);

     }

     【函数2.2说明】

     有3个整数,设计函数compare(int a,int b,int c)求其中最大的数。

     【函数2.2】

      int compare (int a, int b, int c )

      { int temp, max;

       (3) a:b;

       (4) temp:c;

      }

     【函数2.3说明】

     递归函数dec(int a[],int n)判断数组a[]的前n个元素是否是不递增的。不递增返回 1,否则返回0。

     【函数2.3】

      int dec( int a[], int n )

     {

      if(n<=1) return 1;

      if(a[0]<a[1]) return 0;

      return (5);

     }

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

      【说明】

     下列流程图用泰勒(Taylor)展开式y=ex=1+x+x2/2!+x3/3!+…+xn/n!+…计算并打印ex的近似值,其中用ε(>0)表示误差要求。

     【流程图】