一起答

软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷11

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
  1. 阅读下列程序说明和程序段,将应填人(n)处的字句写在对应栏内。

      [说明]

     下面是一个Applet程序,其功能是有2个按钮,分别为First和Second,以及一个Label控件。要求点击First时则能在Label中显示出Command:First,而点击Second时则能显示出 Command: Second,要求只能使用重载一次actionPerfonned()方法。

    程序运行结果如图6所示。

    import java. awt.*;

     import java. awt. event. *;

     import java. applet. *;

     /*

     < applet cede = exl_7, class width = 800 height = 400 >

     </applet >

     */

    public class ex]_? extends Applet implements ActionListener {

     private String str = "ok";

     private Label |;

     private Button btn;

     public void init( ) {

      (1) 

      I = new Label(str);

      I. reshape(10, 10, 150, 30);

      add(I);

      (2) 

      btn. reshape(10, 50, 60, 20);

      (3) 

      add(btn);

      btn = new Button(" Second" );

      btn. reshape(10, 100, 60, 20);

      (4) 

      btn, addActionListener(this);

      add(btn);

    }

     public void actionPerformed(ActionEvent ae) {

      str = " Command:" +ae. getActionCommand( )

      (5) 

    ex1_7, html

    < HTML >

     < HEAD >

      < TITLE > ext _7 </TITLE >

     </HEAD >

     < BODY >

      < appletcode =" ext?. class" width =800 height =400 >

      </applet >

     </BODY >

    </HTML >

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

     [说明]

     ①定义私有数据成员code、english分别用于表示考生的编号、英语成绩,它们都是int型的数据。

     ②完成成员函数void Student::inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下:

     输入编号:

     英语成绩:

     计算机成绩:

     ③利用已实现的类Student的成员函数,完成函数void firstname(Student *A[],int uum)的定义,该函数根据考生信息A[],输出num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。

     源程序文件test1.cpp清单如下:

         #include < iostream. h >

         class Student

         (1) 

          int computer;

          int total;

          public

          void getinformation( );

          void computesum( );

          int getcode( );

          int gettotalscore( );

          ~Student( );

         };

         void Student: :getinformation( )

         {

         (2) 

          cout <<"英语成绩:";

          cin> >english;

          cout <<"计算机成绩:";

          cin > > computer;

         void Student:: computesum ( )

          total = english + computer;

          cout <<"编号" << code <<"总分:" <<total << endl;

         int Student::getcode( )

          return code;

      }

      int Student:: gettotalscore ( )

      {

       return total;

      }

      void firstname(Student * A[] ,int num)

      {

       (3) 

       tempsum = ( * A[0] ). gettotalscore( );

       for( int i=1; i <num; i++)

       {

        if ( ( ( * A[i] ). gettotalscore( ) ) > tempsum)

        {

           tempcode = ( * A[i] ). getcode( );

           tempsum = ( * A[i] ). gettotalscore( );

         }

        }

        cout <<"总分最高者--" << tempcode <<":" << tempsum <<endl;

      } 

      void main( )

      {

       Student * A[3];

       int i,n =3

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

        A[i] = new Student;

        A[i] -> getinformation( )

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

      {

        A[i] -> computesum( )

       firstname ( A,3 );

     }

  3. 请补充函数fun(),该函数可以统计一个长度为n的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd ascasdfg asd as asd mlosd,子字符串为asd,则应输出4。

     注意:部分源程序给出如下。

     请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填人所编写的若干表达式或语句。

     试题程序:

          #include < stdio. h >

         #include < string. h >

         #include < conio. h >

         int fun(char * str,char * substr)

         {

           int n;

           char *p,*r;

            (1);

        while( * str)

       {

        p = str;

        r = substr

        while( * r)

          if((2))

          {

           r++;

           p++;

          {

          else

           break;

         if((3))

          n++;

         str ++;

       }

       return n;

      }

      main( )

      {

       char str[81],substr[3];

       int n;

       clrscr ( );

       printf("输入主字符串:');

       gets(str);

       printf('输入子字符串:" );

       gets( substr );

       puts(str);

       puts(substr);

       n = fun(str,substr);

       printf("n=%d\n",n)

      }

  4. 阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。

     [程序5说明]

     下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2):

     λ→β\βλ

     β→δ\δn

     δ→ξ\ξθ\(λ)

     其中:λ是—个分子式;δ或是一个元素,或是一个带括号的(子)分子式,元素或是一个大写字母(记为ξ),或是一个大写字母和一个小写字母(记为ξθ)β或是一个δ,或是在δ之后接上一个整数n,δn表示β有n个δ的元素或(子)分子式。—个完整的分子式由若干个β组成。

     当然一个正确的分子式除符合上述文法规则外,还应满足分子式本身的语义要求。

     下面的程序输入分子式,按上述文法分析分子式,并计算出该分子式的分子量。例如:元素H的原子量是1,元素O的原子量是16。输入分子式H2O,程序计算出它的分子量为18 (1×2+16)。程序中各元素的名及它的原子量从文件atom.dat中读入。

     [程序5]

      #include < stdio. h >

      #include < string. h >

      #define MAXN 300

      #define GMLEN 30

      struct elem { char name[ ]; /* 元素名*/

             double v;/*原子量*/

             } nTbl [MAXN];

      char cmStr [GMLEN], * pos;

      int c;FILE * fp;

      double factor( );

      double atom( ) /* 处理文法符号δ*/

      {char w [3];int i; double num;

       while((c = * pos++) =='||c =='\t'); /*略过空白字符*/

       if(c == '\n') return 0.0;

       if(c>='A' && C <='Z') {/*将元素名存入W */

       w[i =0]=c;c= * pos ++

       if(c >='a'&& c <='z')w[ ++i] =c;else pos--;

       w[ ++i] ='\0',

       for(i =0;nTbl [i]. v >0.0;i ++)

         if(strcmp (w,nTbl[i]. name) ==0) return nTbl [i]. v;

       printf (" \n元素表中没有所输入的无素: \t%s\n',w); retur n - 1.0;

       } elseif (c = ='(') {

       if((num=(1)) <0.0)return -l.0; /*包括可能为空的情况*/

      if( * pos ++ ! = ')') { printf (" 分子式中括号不匹配!/n") ;return - 1.0; }

      return num;

      }

     printf ("分子式中存在非法字符:\t%c\n" ,c);

     return - 1.0;

     }

     double mAtom( ) /* 处理文法符号β*/

     { double num ;int n = ];

     if((num=(2)) <0.0)return-l.0;

     c= *pos++;

     if(c >='O'&&c <='9') {

      n = 0; while(c > = 0&&c < ='9')

            {n=(3);

             c= *poss ++;

            }

     }

     pos --;

     return num * n;

    }

    double factor( ) /*处理文法符号λ*/

    { double num =0.0,d;

     if(( hum = mAtom ( )) < 0.0) return - 1.0;

     while( * pos >= 'A'&& * pos <= 'Z'||* pos == '(') {

        if((d=(4)) <0.0)return-1.0;

        (5);

     } return num;

    void main( )

    { char fname[ ] ="atom. dst"; /*元素名及其原子量文件*/

    int i;double num;

    if((fp=fopon(fname,"r" )) == NULL) { /*以读方式打开正文文件*/

    prinff("Can net open%s file. \n' ,fname) ;return /*程序非正常结束 */

    i=0;

    while(i < MAXN&&fscanf (fp," %s%lf,bTbl[i]. name,&nTbl[i]. v) ==2)

     i++;

    fclose(fp) ;nTbl[i]. v =-1.0;

    while(1) [/*输入分子式和计算分子量循环,直至输入空行结束*/

     printf(" \n 输入分子式! (空行结束) \n" ) ;gets(cmStr);

     pos = cmStr;

     if(cmStr[0] == '\0') break;

     if( (num = later( ) ) > 0.0)

     if( * pos! = '\0')printf("分子式不完整! \n" );

      else printf("分子式的分子量为%f\n",num);

     }

  5. 对于教学数据库的三个基本表S(S#,SNAME,AGE,SEX),SLLS#,C#,GRADE),C(C#, CNAME,TEACHER)。现根据查询条件填充下面SQL语句空白的部分。

     1.检索LIU老师所授课程的课程号和课程名。

     2.检索至少选修LIU老师所授课程中一门课程的女学生姓名。

     3.检索WANG同学不学的课程的课程名。

     4.检索全部学生都选修的课程的课程号与课程名。

     5.检索选修课程包含LIU老师所授课程的学生学号。

     [说明]

     1.SELECT (1) FROM C WHERE TEACHER='LIU'

     2. SELECT S. SNAME FROM S,SC

      WHERE S.S#=SC.S#AND S. SEX='F'AND SC.C#=(2) 

      (SELECTC# FROM C WHERE TEACHER = 'LIU')

     3. SELECT CNAME FROM C

      wHEREc#< >(3) (SELECTSC. C# FROM S,SCWHERE S.S#=SC.S#AND S. SNAME=' WANG')

     4. 由题知,该问题是在表C中找课程号和课程名,要求这门课被全部学生所选。

      SELECT C#,CNAME

      FROM C

      WHERE NOT EXISTS

      (SELECT *

      FRoM S

      WHERE NOT EXISTS

      (SELECT *

      FROM S

      WHERE NOT EXISTS

      (SELECT *

      FROM SC

      WHERE (4) 

      5. SELECT DISTINCT S#

      FROM SC

      WHERE (5) 

      (SELECT C#

      FROM C

      WHERE TEACHER = 'LIU'

  6. 说明输入串(a,a)#是否为G的句子。

  7. 经改写后的文法是否是LL(1)的?指出它的预测分析表中(1)~(3)处的内容。

  8. 对文法C[S]:S→a,|∧|(T);T→T,S|S;回答问题1~问题3。

    对文法G进行改写,然后对每个非终结符写出不带回溯的递归于程序。

  9. 如果限制该算法最多输出K个可供选择的房间号,则在流程图1的。所指的判断框应改成什么处理?

  10. 如果等级为r的房间每人每天的住宿费为RATE(r),RATE为数组。为使该算法在输出每个候选的房间号RM(J)后,再输出这批散客每天所需的总住宿费DAYRENT(J),流程图1的p所指框中的最后处应增加什么处理?

  11. 阅读下列算法说明和流程图1,回答问题1至问题3。

     [算法说明]

     某旅馆共有N间客房。每间客房的房间号、房间等级、床位数以及占用状态分别存放在数组ROOM、RANK、NBED和STATUS中。房间等级值为1、2或3。房间的状态值为0(空闲)或1(占用)。客房是以房间(不是床位)为单位出租的。

     本算法根据几个散客的要求预订一间空房。程序的输人为:人数M,房间等级要求R(R =0表示任意等级都可以)。程序的输出为:所有可供选择的房间号。

     流程图1描述了该算法。

    假设当前该旅馆各个房间的情况见表3。

     当输入M=4,R=0时,该算法的输出是什么?