一起答
主观

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

  【说明】

 以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口。

 #include<iostream.b>

 #include<math.h>

 class Figure{

 public:

    virtual double getArea0=0; //纯虚拟函数

 };

 class Rectangle: (1) {

 protected:

    double height;

    double width;

 public:

    Rectangle(){};

    Rectangle(double height, double width){

       This->height=height;

       This->width=width;

 }

 double getarea(){

    return (2);

 }

 };

 class Square: (3) {

 public:

    Square(double width){

     (4);

    }

 };

 class Triangle: (5) {

    double la;

    double lb;

    double lc;

 public:

    Triangle(double la, double lb, double lc){

       this->la=la; this->lb; this->lc;

       }

       double getArea(){

        double s=(la+lb+lc)/2.0;

        return sqrt(s*(s-la)**(s-lb)*(s-lc));

       }

 };

 viod main(){

  Figure* figures[3]={

    new Triangle(2,3,3), new Rectangle(5,8), new Square(5));

  for(int i=0;i<3;i++){

    cout<<"figures["<<i<<"]area="<<(figures[i])->getarea()<<endl;

    }

 }

参考答案
查看试卷详情
相关试题
  1. 阅读下列Java程序和程序说明,将应填入(n)处的字句写在对应栏内。

      【说明】StringEditor类的功能是:已知一个字符串,返回将字符串中的非字母字符都删除后的字符串。

     public (1) {

       public static String removeNonLetters( (2) ){

        StringBuffer aBuffer=(3);

        char aCharacter;

        for(int i=0; i<original.length();i++){

          aCharacter=(4);

          if(Character.isLetter(aCharacter))

           aBuffer.append( (5) );

          }

          return new String(aBuffer);

        }

      }

     public class StringEditorTester{

       public static void main(String args[]){

        String riginal="Hi!, My Name is Mark, 234I think you are my classmate?!!";

        System.out.println(StringEditor.removeNonLetters(original));

       }

    }

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

      【说明】

     以下C++程序的功能是计算三角形、矩形和正方形的面积并输出。程序由4个类组成:类Triangle、Rectangle和Square分别表示三角形、矩形和正方形;抽象类Figure提供了一个纯虚拟函数getArea(),作为计算上述3种图形面积的通用接口。

     #include<iostream.b>

     #include<math.h>

     class Figure{

     public:

        virtual double getArea0=0; //纯虚拟函数

     };

     class Rectangle: (1) {

     protected:

        double height;

        double width;

     public:

        Rectangle(){};

        Rectangle(double height, double width){

           This->height=height;

           This->width=width;

     }

     double getarea(){

        return (2);

     }

     };

     class Square: (3) {

     public:

        Square(double width){

         (4);

        }

     };

     class Triangle: (5) {

        double la;

        double lb;

        double lc;

     public:

        Triangle(double la, double lb, double lc){

           this->la=la; this->lb; this->lc;

           }

           double getArea(){

            double s=(la+lb+lc)/2.0;

            return sqrt(s*(s-la)**(s-lb)*(s-lc));

           }

     };

     viod main(){

      Figure* figures[3]={

        new Triangle(2,3,3), new Rectangle(5,8), new Square(5));

      for(int i=0;i<3;i++){

        cout<<"figures["<<i<<"]area="<<(figures[i])->getarea()<<endl;

        }

     }

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

     【说明】本程序从正文文件text.in中读入一篇英文短文,统计该短文中不同单词及出现次数,并按词典编辑顺序将单词及出现次数输出到正文文件word.out中。

     程序用一棵有序二叉树存储这些单词及其出现的次数,边读入边建立,然后中序遍历该二叉树,将遍历经过的二叉树上的结点的内容输出。

     #include <stdio.h>

     #include <malloc.h>

     #include <ctype.h>

     #include <string.h>

     #define INF  "text.in"

     #define OUTF  "wotd.out"

     typedef struct treenode{

        char *word;

        int count;

        struct treenode *left,*right;

     }BNODE

     int getword (FILE *fpt,char *word)

     { char c;

       c=fgetc (fpt);

       if ( c=EOF)

          return 0;

       while(!(tolower(c)>='a' && tolower(c)<='z'))

       { c=fgetc (fpt);

        if ( c==EOF)

           return 0;

       } /*跳过单词间的所有非字母字符*/

       while (tolower (c)>='a' && tolower (c)<='z')

       { *word++=c;

        c=fgetc (fpt);

       }

       *word='\0';

       return 1;

     }

     void binary_tree(BNODE **t,char *word)

     {  BNODE *ptr,*p;int compres;

        P=NULL; (1);

        while (ptr) /*寻找插入位置*/

        { compres=strcmp (word, (2) );/*保存当前比较结果*/

         if (!compres)

         {  (3);return;}

         else

         {  (4);

           ptr=compres>0? ptr->right:ptr->left;

         }

       }

       ptr= (BNODE*) malloc (sizeof (BNODE)) ;

       ptr->left = ptr->right = NULL;

       ptr->word= (char*) malloc (strlen (word) +1) ;

       strcpy (ptr->word, word);

       ptr->count - 1;

       if (p==NULL)

          (5);

       else if (compres > 0)

         p->right = ptr;

       else

         p->left = ptr;

     }

     void midorder (FILE **fpt, BNODE *t)

     { if (t==NULL)

          return;

       midorder (fpt, t->left);

       fprintf (fpt, "%s %d\n", t->word, t->count)

       midorder (fpt, t->right);

     }

     void main()

     { FILE  *fpt; char word[40];

       BNODE *root=NULL;

       if ((fpt=fopen (INF,"r")) ==NULL)

       {  printf ("Can't open file %s\n", INF )

          return;

       }

       while (getword (fpt, word) ==1 )

          binary_tree (&root, word );

       fclose (fpt);

       fpt = fopen (OUTF, "w");

       if (fpt==NULL)

       {  printf ("Can't open file %s\n", OUTF)

          return;

       }

       midorder (fpt, root);

       fclose(fpt);

     }

  4. 阅读以下说明,回答问题1至问题3,将答案写在对应栏内。

      【说明】

     在一个航空公司的航班管理系统中,有以下一些事实。

     (1)一个航班可能是一个或多个乘客的运输工具,每个乘客可能是一个或多个航班的旅客。

     (2)一个且仅一个飞行员必须对每个航班负责,每个飞行员可能负责一个或多个航班。

     (3)一个或多个飞行员必须对每个乘客负责,每个飞行员必须对一个或多个乘客负责。

     现有飞行员的实体如下:

     飞行员(飞行员编号,航班编号,姓名,工资,起飞地,到达地,飞行信用时间)

     说明:飞行信用时间是一个特定的航班分配给一名飞行员,授权他可以驾驶管理这个航班。

     【问题1】

     实体“飞行员”是否符合1NF,如果不符合,如何将它规范化。

     【问题2】

     由问题1得到的实体“飞行员”是否符合2NF,如果不符合,如何将它规范化。

     【问题3】

     指出最后得到关系模式的候选码。

  5. 阅读以下说明和图,回答问题,将答案写在对应栏内。

      【说明】

     银行客户需要从ATM取100元,他向ATM的读卡机插卡,读卡机读取他的卡号,然后ATM屏幕初始化,ATM提示输入密码,客户输入密码(123456),ATM打开他的账户,密码有效,因此ATM提示选择事务,客户选择取钱,ATM提示输入金额,客户输入100元,ATM验证账户上有足够的钱,就从账上减去100元,ATM吐出100元,并退出的卡。

     【问题】

     根据上面的描述,在下面填写,完成未完成的协作图。

     1.插卡(客户一读卡机)

     2._(____→____)

     3._(____→____)

     4.提示输入PIN (123456) (ATM 显示屏→客户)

     5._(____→____)

     6._(____→____)

     7.验证PIN(__→__)

     8.提示选择事务(__→__)

     9._(客户→ATM屏幕)

     10.提示金额(ATM屏幕→客户)

     11.输入金额(客户→ATM屏幕)

     12.取钱(ATM屏幕→的账户)

     13._(____→____)

     14._(____→____)

     15._(____→____)

     16.提供收据(客户的账户→取钱机)

     17._(____→____)

  6. 阅读以下说明和流程图,回答问题1至问题3,将答案写在对应栏内。

      【说明】

     流程图描述了某高校图书订购与编目系统的处理流程。全校的图书典藏在校图书馆和各系的资料室中。学校每年分若干批向出版单位订购图书,同一批订购的图书将陆续邮寄到学校。出版单位在寄出图书的同时附上到书清单和发票,发票上仅给出一份到书清单中书的总册数和总金额。学校收到图书和发票后,先参照订购单验收,然后进行编目,并把有关信息存放在书种文件、书名文件、作者文件和复本文件中,以供读者检索。

     书种文件记录了每种书的有关信息。所谓一种书是指同一作者、同一书名、同一出版单位和同一出版年份出版的书。例如,2004年张明在科技出版社出版了《软件工程》(印数8000册)和《数据库基础》(印数5000册),则张明在2004年出版了两种书。在全校的藏书中,如果一种书只有一册,则该书的信息存放在书种文件中:如果一种书有多册,则其中一册书的信息存放在书种文件中,其余的书作为复本将信息存放在复本文件中。复本文件的结构与书种文件的结构相同,每种书都有一个书号,书号唯一地标识了一种书。在书库中,每册书有一个登录号,登录号唯一地标识了一册书。此外,为了图书检索的方便,将图书按学科分类,分类号用来标识不同的学科领域。

     各类单据和文件的结构如下所示。

     订购单:订购批号、书名、作者名、出版单位、出版年份、单价、订购册数、订购部门代码、订购日期。

     到书清单:订购批号、书名、作者名、出版单位、出版年份、单价、册数。

     发票:订购批号、发票号、总册数、总金额。

     书种文件:分类号、登录号、书名代码、作者代码、出版单位、出版年份、单价、复本标志、典藏部门代码、借出标志。

     其中,复本标志用来指示该种书在书库中有没有复本:对于书名相同的若干种书,书名代码是相同的。

     书名文件:书名代码、书名。

     作者文件:作者代码、作者名。

     【问题1】

     指出验收文件至少应由哪些数据项组成。

     【问题2】

     由于处理5和处理6的分类,可能导致分类后的文件中一张发票无法找到与它对应的那些书,从而当一组发票的金额之和与一组到书清单中的书价之和不等时,无法知道是哪一张发票和哪一份清单不一致。如果仍使用原流程图,那么当到书清单文件的结构做何改动后,能找出不一致的发票和相应的书目。

      

     【问题3】

     若在书种文件中增加数据项“书号”,则如何重新设计复本文件的结构,使数据冗余最小。