一起答
主观

阅读下列算法说明和算法,将应填入(n)处的字句写在答卷的对应栏内。

【算法说明】

 某英汉词典文件包含N个记录(N>1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。

 本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。

 【算法】

 第一步 读入英汉词典文件,并将读入的N个英文单词依次存放在字符串数组ENG中,将相应的汉语解释依次存放在字符串数组CN中。数组元素CN(i)给出了数组元素ENG(i)的解释。

 第二步 输入英文单词及其汉语解释,将它们分别存放在字符串变量E和C中。若E为空串或都是空格,则转向第四步。

 第三步 根据变量E的值,用二分法在数组ENG中查找。具体步骤如下:

 1.1→L,N→H

 2.INT((L+H)/2)→K

 3.若E=ENG(K),则C→CN(K),转向第二步

 若E<ENG(K),则K-1→(1);若E>ENG(K),则K+1→(2) 

 4.若H<L则

 对I=N,L,-1(始值,终值,增量)循环执行:

 ENG(I)→ENG(I+1)

 CN(I)→CN(I+1)

 然后,将E和C分别存入(3)和(4),N+1→N最后转向第二步

 否则,转向(5) 

 第四步 将数组ENG和CN输出,形成新的英汉词典文件,算法结束。

试题出自试卷《软件水平考试(初级)程序员下午(应用技术)模拟试卷8》
参考答案
查看试卷详情
相关试题
  1. 阅读以下说明和Java代码,将应填入(n)处的字句写在对应栏内【说明】

     编写字符界面的Application程序,接收依次输入的10个整型数据,每个数据一行,将这些数据按升序排序后从系统的标准输出设备输出。

     【Java代码】

     import java.iO.*;

       import java.util.* ;

       public class compositor

       {

       public static void main ( String args[] )

       {

         final int NUMBER=10;

         Vector dataVector=new Vector ();

         try

         {

        BufferedReader br=new BufferedReader (

        (1) InputStreamReader ( System.in ));

       System.out.println ("请输入"+NUMBER+"个整数");

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

       {

         int temp=Integer.parselnt ( br.(2));

         int low=0, high=i-1, mid=0;

         while ((3))

         {

            System.out.println ( low+","+mid+","+high );

            (4);

            if ((( Integer ) dataVectOr.get( mid )) .intValue () ==temp )

            {

              data Vector.insertElementAt ( new Integer ( temp ), mid );

              break;

            }

              else if ((( Integer ) dataVector.get ( mid )) .intValue ( ) >temp )

            {

              high=mid-1;

            }

            else

            {

             (5);

            }

        }

        if ( low>high )

        {

          dataVector, insertElementAt ( new Integer ( temp ), iow );

        }

       }

         //输出

       System.out.println ( "\n升序的排序结果为; ");

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

       {

         System.out.print ( dataVector.get( i ) .toString () +"\t" );

       }

     }

     catch ( NumberFormatException nfe)

     {

       System.out.println ( nfe.toString ());

       System.out.println ( "整数格式输入错误。");

     }

     catch ( IOException ioe )

          {

           System.out.println ( ioe.toString ());

         }

       } 

     }

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

    [说明]

     设计一程序,输入10个整数到一个数组中,调整这10个数在数组中的位置,使得其中最小的一个数成为数组的首元素,最大的一个数成为数组的末元素。

     [C++程序]

     #include <iostream.h>

     #define SIZE 10

     void main ( )

     {

        int data [SIZE];

        int m;

        cout<<"请输入"<<SIZE<<"个整数:";

        for ( m=0;m<SIZE; m++ ) (1);

        int j=0,k=0;

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

           if ((2)) j=i;

           else if ( data[i]<data[k] ) (3);

           if (j>0 ) {

             int d=data[0];

              (4);

             data[k]=d;

           }

           if ( k<SIZE-1 )

           {

             int d=data [SIZE- 1 ];

             data[SIZE- 1 ]=data[j];

              (5);

           }

           cout<<end1<<" 排序后: ";

           for ( m=0;m<SIZE; m++ ) cout<<data[m]<<" " ;

     }

  3. 阅读以下说明和Visual Basic代码,将应填入(n)处的字句写在对应栏内。

    【说明】

     以下代码实现了当用户退出界面时,判断TextEdit中的文字是否发生改变,弹出对话框判断,让用户选择是否保存文件或取消退出界面操作。阅读下面的代码,将其补充完整。

     【代码7-1】

     Begin VB.Form. Forml

     //...窗体描述(略)

      Begin VB.TextBox TextEdit

        Height     = 1830

        Left      = 180

        Tablndex    = 0

        Text      = "TextEdit"

        Top      = 360

        Width     = 3885

       End

     //...窗体描述(略)

     End

     【代码7-2】

     Dim txtchange As Boolean

     Dim myval As String

     Private Sub Form. Load ()

      TextEdit.Text: "CIU, 中国软考联盟!"

      txtchange = False

     End Sub

     【代码7-3】

     Private Sub TextEdit_Change ()

       Static notchange As Boolean

        (1) 

     notchange = Tree

       End Sub

       Private Sub Form_Unload ( Cancel As Integer )

        Dim myval As String

        If (2) Then

          myval = MsgBox ( "保存文件的更改吗?", vbYesNoCancel, "提示信息" )

          If (3) Then

            MsgBox "保存成功"

            End

          End If

          If (4) Then End

          If (5) Then Cancel = 1

       End If

     End Sub

  4. 阅读以下说明和Visual Basic代码,将应填入(n)处的字句写在对应栏内。

    【说明】

     在一些应用场合中,需要对用户的输入数据进行检查监控。以下VisualBasic程序实现了对新添加到 List列表的内容进行监控,拒绝向List列表添加重复信息。例如,在List列表中存在元素“a01001;a01002”,如果用户输入数据为“a01001”或“a01002”,系统则弹出提示信息,拒绝将新数据加入List列表;如果用户输入的数据不同于List列表中的任何一个元素,则作为新元素加入List中。VisualBasic界面显示如图所示。根据程序功能说明,完成程序代码。

                         

     【代码5-1】

     Begin VB.Form. Forml

       Caption   = "List 列表拒绝添加重复信息"

        //...窗体描述(略)

       Begin VB.CommandButton Command2

         Caption    = "退出"

        //...窗体描述(略)

       End

       Begin VB.CommandButton Commandl

         Caption    = "添加"

        //...窗体描述(略)

       End

       Begin VB.TextBox Text1

     //...窗体描述(略)

       End

       Begin VB.ListBox List1

         Height     = 1860

         ItemData    = "Form1.fix": 0000

         Left      = 1020

         List      = "Form1.fix": 0002

         TabIndex    = 0

         Top      = 525

         Width     = 2580

       End

       Begin VB.Labe1 Labe11

         BackStyle   = 0 'Transparent

          Caption   = "请输入编号"

       //...窗体描述(略)

         End

     End

     【代码5-2】

     Attribute VB Name = "Form1"

     Attribute VB_GlobalNameSpace = False

     Attribute VB Creatable = False

     Attribute VB PredeclaredId = True

     Attribute VB_Exposed = False

     Private Sub Form. Load ()

      List1.AddItem "a01001"

      List1.AddItem "a01002"

     End Sub

     Private Sub Cormnand1 Click ()

      Dim Myval As Long

      For i=0 To (1) 

          (2) 

        If (3) Then

          MsgBox "系统不允许重复输入,请重新输入"

          Exit Sub

        End If

      (4) 

      (5) 

     End Sub

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

    [说明]

     求树的宽度,所谓宽度是指在二叉树的各层上,具有结点数最多的那一层的结点总数。本算法是按层次遍历二叉树,采用一个队列q,让根结点入队列,若有左右子树,则左右子树根结点入队列,如此反复,直到队列为空。

     [函数]

     int Width ( BinTree *T

     {

     int front=-1, rear=-1;  /*队列初始化*/

     int flag=0, count=0, p;  /*p用于指向树中层的最右边的结点, flag 记录层中结点数的最大值*/

     if ( T!=Null)

     {

     rear++;

      (1);

     flag=1;

     p=rear;

     }

     while ((2))

     {

     front++;

     T=q [front]];

     if (T->lchild!=Null )

     {

     roar+-+;

      (3);

     count++;

     }

     if ( T->rchild!=Null )

     {

     rear++; q[rear]=T->rchild;

      (4);

     }

     if (front==p ) // 当前层已遍历完毕

     {

     if((5))

      flag=count;

      count=0;

     p=rear, //p 指向下一层最右边的结点

      }

     }

     return ( flag );

    }

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

    [说明]

     某班有n个同学,学号分别为1,2,…,n。为了每天指派若干个同学值日,他们放弃传统单调的轮留值日,别出心裁采用“定和值日”法:每天所指派值日同学的学号之和须等于其班号m(n<m<n(n+1)/2)并且规定:不允许任何两天值日的同学完全一样。

     编程使n个同学按定和m值日(正整数n、m均从键盘输入,约定n<50,m<100),求出可持续的值日天数f(n,m)。运行程序,具体求出f(19,98)的值。

     [函数]

      main ( )

     {

     int b, p, i , m, n, k;

     static int a[51][101]:

     long s=0;

     printf (" 请输入学生人数;");

     scanf ( "%d", &n );

     printf (" 请输入定和值: ");

     scanf ( "%d", &m );

     a[1][0]=1; a[1][1]=1;           /* 数组元素赋初值*/

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

     {

     for (i=j;(2); i++)       /* 计算 a (2, m),…, a(n, m)*/

     {

      (3);

     b=0,

     for ( k=1 k<j-1; k++

      (4);

     a[j][i]=b; }

      (5); }             /* 求和s 为所求结果*/

     printf (" ");

     printf ( "f ( %d, %d ) =%1d\n", n, m, s );

     }

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

    [函数2.1说明]

     函数fun1 (int m, int k, int xx [])的功能是:将大于整数m且紧靠m的k个素数存入数组xx中传回。例如:若输入17,5,则应输出:19,23,29,31,37。

     [函数2.1]

       fun1 (int m, int k, int xx [] )

       {

      inti, j, s=0;

     for ( i=m+1; k>0; i++ )

      {for (j=2; j<i; j++ )

        if ( i %j=0 )

         (1) 

       if( i==j )

        {

        (2) 

        k--; }

        }

       }  

    [函数2.2说明]

     函数void fun 2 ()的功能是:打印出杨辉三角形(要求打印出10行)。

     [函数2.2]

      void fun2 ( )

     {

     int i, j;

     int a[10][10];

     printf ("\n" );

     for (i=0; i<10; i++

       {a [i] [0]=1;

      (3))

     for (i=2; i<l0; i++ )

       for (j=1; j<i; j++)

      (4) 

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

       {for (j=0; j<=i; j++ )

       (5) 

       printf ( "\n" );

       }

     }

  8. 阅读下列算法说明和算法,将应填入(n)处的字句写在答卷的对应栏内。

    【算法说明】

     某英汉词典文件包含N个记录(N>1),每个记录有两个字段:一个是英文单词,另一个是相应的汉语解释。各个记录按英文单词的词典顺序排列,各英文单词并不重复。

     本算法用于维护、更新该英汉词典文件。维护、更新的方法是:首先输入一个英文单词及其汉语解释,然后在该词典中查找输入的英文单词,若找到,则用输入的汉语解释更新原有的解释;若找不到,则需要将输入的英文单词及其汉语解释插入到该词典的适当位置,使各记录仍按英文单词的词典顺序排列。

     【算法】

     第一步 读入英汉词典文件,并将读入的N个英文单词依次存放在字符串数组ENG中,将相应的汉语解释依次存放在字符串数组CN中。数组元素CN(i)给出了数组元素ENG(i)的解释。

     第二步 输入英文单词及其汉语解释,将它们分别存放在字符串变量E和C中。若E为空串或都是空格,则转向第四步。

     第三步 根据变量E的值,用二分法在数组ENG中查找。具体步骤如下:

     1.1→L,N→H

     2.INT((L+H)/2)→K

     3.若E=ENG(K),则C→CN(K),转向第二步

     若E<ENG(K),则K-1→(1);若E>ENG(K),则K+1→(2) 

     4.若H<L则

     对I=N,L,-1(始值,终值,增量)循环执行:

     ENG(I)→ENG(I+1)

     CN(I)→CN(I+1)

     然后,将E和C分别存入(3)和(4),N+1→N最后转向第二步

     否则,转向(5) 

     第四步 将数组ENG和CN输出,形成新的英汉词典文件,算法结束。