一起答

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

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

     【程序说明】

     该程序定义了两个子函数strsort和strmerge。它们分别实现了将一个字符串按字母顺序排序和将两个字符串合并排序,并删去相同字符。在主函数里,先输入两个字符串s1和s2,然后调用strsort函数对它们分别排序,然后调用strmerge函数将s1和s2合并,将合并后的字符串赋给字符串s3,最后输出字符串s3。

     【程序】

      #include <stdio.h>

     void strmerge(char *a,char *b,char *c)      //将字符串a,b合并到字符串c

     {

      char t,*w;

      W=c;

       while( (1) )

      {

      //找到字符串a,b当前字符中较小的字符

       if(*a<*b)

        {

         t=-*a,

         (2) 

        }

       else if(*a>*b)

        {

         t=*b;

         (3) 

        }

       else          //字符串a,b 当前字符相等

        {

         t=-*a;

         a-H-;

         b-H-;

        }

       if( (4) )   //开始,可直接赋值

         *w=t;

       else if(t!=*w)

       //如果a,b中较小的当前字符与c中当前字符不相等,才赋值

        (5) 

      }

      if(*a!='\O')         //如果字符串a还没有结束,则将a的剩余部分赋给c

      while(*a!='\0')

       if(*a!=*w)

       {

         *(++w)=*a;

         a++;

        }

       else

        (6) 

      if(*b!=",'\0')        //如果字符串b 还没有结束,则将 b 的剩余部分赋给 c

      while(*b !='\0')

       if(*b!=*w)

        {

         *(++w)=*b;

         b++;

        }

       else

         b++;

         (7) 

       }

       void strsort(char *s)        //将字符串 s 中的字符排序

      {

        int i,j,n;

        char t,*w;

        w=s;

        for(n=O;*w!='\O';n++)      //得到字符串长度 n

         w++;

        for(i=O;i<n-1;i++)      //对字符串 s 进行排序,按字母先后顺序

         forO=i+ 1 ;j<n;j++)

          if( (8) 

            {

             t=s[i];

             s[i]=s[j];

             (9) 

            }

        }

      void mainO

      {

       char s1 [100],s2[100],s3[100];

       prinff("\nlPlease input the first string:");

       scanfC("% s",s1 );

       prinff("\nPlease input the second string:");

       scanf("%s",s2);

       strsort(s1);           //将字符串s1 排序

       strson(s2);           //将字符串 s2 排序

       prinff("%s\n',s1);

       printfC % sW',s2);

       s3[0]='\O';          //字符串 s3 的第一个字符先置'\0'结束标志

        (10);     //将s1和s2合并,按照字母顺序排列,

     

  2. 为各测试路径设计测试用例。

  3. 计算控制流图的McCabe环路复杂性。

  4. 用基本路径覆盖法给出测试路径。

  5. 阅读下列程序和控制流图,将应填入(n)的字句写在答题纸的对应栏内。

     【程序】

     下面是一段求最大值的程序,其中datalist是数据表,n是datalist的长度+

       int GetMax (int n, int datalist[]) {

         int k=0;

         for (int j=1;j<n;j++)

          if (datalist[j] > datalist[k])

           k=j;

         retum k;

    该程序的控制流图中A~E分别是什么?

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

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

  8. 指出测试用例设计中(4)~(9)处的内容。

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

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

  10. 指出数据流图4-1和数据流图4-2中错误的数据流。

  11. 根据题中说明和数据流图分析,“查询处理”是否可以查询出剩余票的信息?为什么?

  12. 【算法说明】

     下面是一段插入排序的程序,将R[k+1]插入到R[1...k]的适当位置。

     R[0]=R[k+1];

     j=k;

     while(R[j]>R[0])

      {

       R[j+1]=R[j];

       j- -;

      }

     R[j+1]=R[0];

    【测试用例设计】

     (while循环次数为0、1、2次)

    指出算法的流程图中(1)~(3)处的内容。

  13. 【说明】

     某直达列车车票预售系统接受顾客的订票、取票和售票处工作人员的查询业务。

     1.顾客为了提前订票,可向系统提供个人信息及其预订购的车次及日期,系统根据个人信息是否齐全以及车次是否正确来判断订票单是否合格。对于合格的订票单系统,如果相应的车次有剩余票,则记录顾客个人信息以及订票信息,并向顾客提供取票单。

     2.到了可以取票的时间,顾客向系统提供取票单,在检查单据合格的情况下,系统向顾客提供火车票。

     3.售票处的工作人员可以利用系统查询各车次车票的售票情况。

     该直达列车车票预售系统的分层数据流图中部分数据流和文件的组成如下:

     文件:

     火车时刻表=车次+开车时间+到站时间+起始站+终点站+上铺票价+下铺票价

     订票信息表=车次+车票日期+旅客身份证号+座位号+是否领票

     旅客信息表=旅客身份证号+姓名+性别+联系电话

     座位表=车次+座位号

     数据流:

     订票单=旅客姓名+性别+身份证号+联系电话+车次十车票日期

     车票=车次+起始站生终点站+开车日期+开车时间+座位号+票价

    假定顶层图是正确的,“火车时刻表”和“座位表”文件已由其他系统生成。

    指出哪张图的哪个文件可以不必画出。