一起答
主观

阅读以下算法说明和流程图,回答问题1和问题2。

【算法说明】

 下面是一段插入排序的程序,将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];

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

参考答案
查看试卷详情
相关试题
  1. 阅读下列程序说明和C++代码,将应填入(n)处。

      【说明】

     源程序中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。

     ①定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。

     ②定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。

     ③完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。

     ④完成Money类成员函数float Money::TotalMoney(float fencelen,float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。

     注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

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

     #include<iostream.h>

      (1) 

     class Circle

     {

     private:

      float radius;

     public:

       (2) 

      float Circumference(){return 2 * P| * radius;}

      float Area(){return P|*radius * radius;}

     };

     class Money

     {

     private:

      float FencePrice;

      float ConcretePrice;

     public:

      Money(float f,float c);

      float Tota|Money(float fencelen, float conarea);

     };

     Money::Money(float f,float c)

     {

       (3) 

     }

     float Money::Tota|Money(float fencelen, float conarea)

     {

       (4) 

     }

     void main( )

     {

       float radius, fence, concrete;

       cout. setf(ios:: fixed);

       cout. setf(ios:: showpoint);

       cout. precision (2);

       cout << "Enter the radius of the pool:";

       cin > > radius;

       cout << "Enter the FencePrice:";

       cin > > fence;

       cout << "Enter the ConcretePrice: ";

       cin > > concrete;

       Circle Pool(radius);

       Circle PoolRim(radius + WIDTH);

       Money mon( fence, concrete);

       float totalmoney = mon. TotalMoney( PoolRim. Circumference( ), ( PoolRim. Area ( ) - Pool.

       Area ( ) ) );

       cout << "The total money is RMB" << totalmoney << end|;

     }

  2. 【说明】

     下面是一个Applet程序,其功能是将完整的图像显示于Applet的区块中,然后可以通过拖动鼠标让图像随着鼠标拖动的轨迹而移动。

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

      

     import java. applet. *;

     import java. awt. *;

     /*

     <applet code="ex4_7.class",width=800 height=400>

     </applet>

     */

     public class ex4_7 extends Applet{

      private |mage ilmg;

      private int xPos,yPos;

      public void init(){

       xPos = yPos=(1);

       ilmg=getlmage((2)"ex4_7.jpg");

      }

      publicvoid paint(Graphics g){

       g. drawlmage(ilmg,xPos,yPos,(3));

      }

      public boolean (4) (Evente,int x,int y){

       xPos=x;

       yPos=y;

        (5);

       return true;

      }

     }

     ex4_7. html

     <HTML>

     <HEAD>

      <TITLE> ex4_7 </TITLE>

     </HEAD>

     <BODY>

      <appletcode=" ex4_7. class" width =800 height =400 >

      </applet>

     </BODY>

     </HTML>

  3. 阅读下列函数说明和C函数,将应填入(n)处。

      【函数3说明】

     函数DeleteNode(Bitree * r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

     typedef struct Tnode{

     int data;  /*结点的键值*/

     struct Tnode * Lchild,*Rchild;   /*指向左、右子树的指针*/

     } * Bitree;

     在二叉查找树上删除一个结点时,要考虑三种情况:

     ①若待删除的结点p是叶子结点,则直接删除该结点;

     ②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点P;

     ③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。

     【函数3】

     int DeleteNode(Bitree * r,int e){

      Bitree p=*r,pp,s,c;

      while((1)){  /*从树根结点出发查找键值为e的结点*/

       pp=p;

       if(e<p->data)p=p->Lchild;

       else p=p->Rchild;

      {

      if(!p)return-1;      /*查找失败*/

      if(p->Lchild &&p->Rchild){/*处理情况③*/

       s=(2); pp=p;

       while((3)){pp=s;s=s->Rchild;}

       p->data=s->data;p=s;

      }

      /*处理情况①、②*/

      if((4))c=p->Lchild;

      else c=p->Rchild;

      if(p==*r)*r=c;

      else if((5))pp->Lchild=c;

       else pp->Rchild=c;

      free(p);

      return 0;

     }

  4. 阅读下列程序说明和C代码,将应填入(n)处。

      【程序5说明】

     设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用“()”括起来的各子树的列表(如有子树的话),各子列表间用“,”分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。

     本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。

     【程序5】

     #include<Stdio.h>

     #include<Stdlib.h>

     #define M 3

     typedef struct node{char val;

                struct node,subTree[M];

     }NODE;

       char buf[255],*Str=buf;

       NODE * d=NULL

       NODE*makeTree()/*由列表生成M叉树*/

       {int k;NODE*s;

        s=(1);

        s->val= *Str++;

        for(k=0;k<M;k++)s->subTree[k]=NULL;

        if(* str='('){

           k=0;

           do{str++;

            s->sub Tree[k]=(2);

            if(*Str==')'){Str++;break;}

            k=k+1;

           }while((3));

          }

        return s;

       }

       void walkTree(NODE*t)/*由M又树输出列表*/

         {int i;

          if(t!=NULL){

           (4) 

          if(t->subTree[0]==NULL)return;

          putchar('(');

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

          (5);

           if(i!=M-1&&t->subTree[i+1]!=NULL)

           putchar(',');

          }

          putchar(')');

       }

     }

     void main()

     {printf("Enter exp:");

      scanf("%s",str);

      d=makeTree();

      walkTree(d);putchar('\n");

     }

  5. 请补充函数fun(),该函数的功能是将字符串tt中的大写字母都改为对应的小写字母,其他字符不变。例如,若输入“Are you come from Sichuan?”,则输入“are you come from si- chuan?”。

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

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

     试题程序:

     #include<stdio.h>

     #include<stnng.h>

     #include<conlo.h>

     char *fun(char tt[])

     {

      int i;

      for(i=0; tt[i];i++)

      {

       if((tt[i]>='A')&&((1)))

        (2);

      }

      return((3));

     }

     main()

     {

      charn[81];

      printf("\nPlease enter a string:");

      gets(tt);

      printf("\nThe result string is:\n%s",fun(tt));

     }

  6. 说明处理6的功能。

     【流程图】

    (如图3所示)

  7. 处理4能发现哪些错误(不需考虑设备故障错误)?

  8. 阅读以下说明和流程图,回答问题1至问题3。

     【说明】

     某城市电信局受理了许多用户申请在指定电话上开设长话业务。长话包括国内长途和国际长途。电信局保存了长话用户档案和长话业务档案。

    (1)请说明流程图1中的文件F0、F1分别是哪个文件。

    (2)处理1和处理5分别按照哪些数据项进行分类?

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

  10. 阅读以下算法说明和流程图,回答问题1和问题2。

    【算法说明】

     下面是一段插入排序的程序,将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];

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