一起答
主观

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

参考答案
查看试卷详情
相关试题
  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中错误的数据流。