简答题

课程名称:程序员

题目:阅读以下说明和Java程序,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]很多依托扑克牌进行的游戏都要先洗牌。下面的Java代码运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。[Java代码]     import java.util.List;     import java.util.Arrays;     import java.util.Collections;     class Card { //扑克牌类     public static enum Face  { Ace,  Deuce,  Three,  Four,  Five,  Six,     Seven,  Eight, Nine,  Ten,  Jack, Queen, King };              //枚举牌点     public static enum Suit { Clubs,  Diamonds, Hearts, Spades };  //枚举花色     private final Face face;     private final Suit suit;     public Card( Face face, Suit suit )  {     ______ face = face;     ______ suit = suit;      }      public Face getFace()  {  return face;     }      public Suit getSuit()   {  return suit;     }     public String getCard()  {      //返回String来表示一张牌     return String.format( "%s, %s",  face,  suit);     }     }     //牌桌类     class DeckOfCards  {     private List< Card > list;              //声明List以存储牌     public DeckOfCards ()  {                //初始化牌桌并进行洗牌     Card[]  deck = new Card[ 52 ];     int count = 0;                          //牌数     //用Card对象填充牌桌     for  ( Card. Suit suit : Card. Suit.values()  )  {     for  ( Card. Face face : Card. Face. values()  )  {     ______ = new Card( face,  suit );     }     }     list = Arrays.asList( deck );     Collections. shuffle( list );        //洗牌     }     public void printCards()     {     //按4列显示52张牌     for ( int i = 0; i < list.size(); i++ )     System.out.printf( "%-19s%s",  list. ______,     ( ( i+1 ) % 4 == 0 ) ? "\n  );     }     }     public class Dealer {     public static void main( String[]  args )   {     DeckOfCards player = ______;     ______ printCards ();     }     }

简答题

课程名称:程序员

题目:阅读下列说明、C++代码和运行结果,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]很多依托扑克牌进行的游戏都要先洗牌。下面的C++程序运行时先生成一副扑克牌,洗牌后再按顺序打印每张牌的点数和花色。[C++代码]     #include<iostream>     #include<stdlib.h>     #include<ctime>     #include<algorithm>     #include<string>     USing namespace std;     const string Rank[13]={"A","2","3","4","5","6","7","8","9","10","J", "Q","K"};  //扑克牌点数     const strinq Suits[4]={"SPADES","HEARTS","DIAMONDS","CLUBS"); //扑克牌花色     Class Card{     private:     int rank;     int suit;     public:     Card(){}     ~Card(){}     Card(int rank,int suit) {______ rank=rank;______ suit=suit;}     int getRank(){     return rank;     }     int getSuit(){     return suit;     }     void printCard(){     cout<<  '('<<Rank[rank]<<",  "<<Suits[suit]<<")":     }     };     Class  DeckofCards{     private:     Card deck[52];     public:     DeckOfCards(){       //初始化牌桌并进行洗牌     for(int i=0; i<52;i++)  {    //用Card对象填充牌桌     ______ =card(i%13,i%4);     }     Srand((unsigned)time(0));    //设置随机数种孔     std::random shuffle(&deck[0],&deck[51]);   //洗牌     }     ~DeckOfCards()  {     }     void printCards()  {     for(int i=0; i<52; i++){     ______ printCard();     if((i+1)% 4==0)cout<<endl;     else cout<<"\t";     }     }     };     int main  (){     DeckOfCards  *d= ______;    //生成一个牌桌     ______;    //打印一副扑克牌中每张牌的点数和花色     delete d:     return 0;     }

简答题

课程名称:程序员

题目:阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]二叉树的宽度定义为含有结点数最多的那一层上的结点数。函数GetWidth()用于求二叉树的宽度。其思路是根据树的高度设置一个数组counter[],counterl[i]存放第i层上的结点数,并按照层次顺序来遍历二叉树中的结点,在此过程中可获得每个结点的层次值,最后从counter[]中取出最大的元素就是树的宽度。按照层次顺序遍历二叉树的实现方法是借助一个队列,按访问结点的先后顺序来记录结点,离根结点越近的结点越先进入队列,具体处理过程为:先令根结点及其层次号(为1)进入初始为空的队列,然后在队列非空的情况下,取出队头所指示的结点及其层次号,然后将该结点的左子树根结点及层次号入队列(若左子树存在),其次将该结点的右子树根结点及层次号入队列(若右子树存在),然后再取队头,重复该过程直至完成遍历。设二叉树采用二叉链表存储,结点类型定义如下: typedef struct BTNode {      TElemType data;      struct BTNode *left,*right;队列元素的类型定义如下: typedef  struct {      BTNode *ptr;      int LevelNumber;      )QElemType;GetWidth()函数中用到的函数原型如下所述,队列的类型名为QUEUE: [C函数]      int GetWidth(BiTree root)      {      QUEUE  Q;      QElemType a,  b;      int width,height=GetHeight(root);      int i,*counter=(int*)calloc(height+1,sizeof(int));      if (______)    return-1;    /*申请空间失败*/      if(!root)    return 0;    /*空树的宽度为0*/      if(______)    return-1;    /*初始化队列失败时返回*/      a.ptr=root;    a.LeveiNumber=1;      if(!EnQueue(&Q,a))return-1;    /*元素入队列操作失败时返回*/      while(!isEmpty(Q)){      if(______)return-1;    /*出队列操作失败时返回*/      counter[b.LevelNumber]++;  /*对层号为b.LevelNumber的结点计数*/      if(b.ptr->left)  { /*若左孔树存在,则左孔树根结点及其层次号入队*/      a.ptr=b.ptr->left;      a.LevelNumber= ______;      if ( !EnQueue(&Q,a))return-1;      }      if (bptr->right) {/*若右孔树存在,则右孔树根结点及其层次号入队*/      a.ptr=b.ptr->right;      a.LevelNumber=______;      if(!EnQueue(&Q,a))return-1;      }      }      width=counter[1];      for(i=1;i<height+1;i++)    /*求counter[]中的最大值*/      if(______) width=counter[i];      free(counter);      return width;      }

简答题

课程名称:程序员

题目:阅读以下说明和C函数,填补函数代码中的空缺,将解答填入答题纸的对应栏内。[说明]队列是一种常用的数据结构,其特点是先入先出,即元素的插入在表头、删除在表尾进行。下面采用顺序存储方式实现队列,即利用一组地址连续的存储单元存放队列元素,同时通过模运算将存储空间看作一个环状结构(称为循环队列)。设循环队列的存储空间容量为MAXQSIZE,并在其类型定义中设置base、rear和length三个域变量,其中,base为队列空间的首地址,rear为队尾元素的指针,length表示队列的长度。 #define  MAXQSIZE  100     typedef  struct    {     QElemType *base;    /*循环队列的存储空间首地址*/     int    rear;    /*队尾元素索引*/     int length;    /*队列的长度*/     }SqQueue;例如,容量为8的循环队列如下图所示,初始时创建的空队列如下图(a)所示,经过一系列的入队、出队操作后,队列的状态如下图(b)所示(队列长度为3)。下面的C函数1、C函数2和c函数3用于实现队列的创建、插入和删除操作,请完善这些代码。[C函数1]创建一个空的循环队列。 [C函数1]创建一个空的循环队列。     int InitQueue(SqQueue *Q)     /*创建容量为MAXQSIZE的空队列,若成功则返回1;否则返回0*/     {  Q->base=(QElemType *)malloc(MAXQSIZE* ______};     if (!Q->baSe)return 0;     Q->length=0;     Q->rear=0;     return 1;     }/*InitQueue*/     [<strong>[C函数2]</strong>]元素插入循环队列。     int EnQueue(SqQueue *Q,QElemType e)  /*元素e入队,若成功则返回1;否则返回0*/     {    if(Q->length>=MAXQSIZE.return 0;     Q->rear= ______;     Q->base[Q->rear]=e;     ______;     return 1;     }/*EnQueue*/     [C函数3]元素出循环队列。     int DeQueue(SqQueue *Q,QElemType *e)     /*若队列不空,则删除队头元素,由参数e带回其值并返回1;否则返回0*/     {  if(______)return 0;     *e=Q->base[(Q->rear-Q->length+1+MAXQSIZE.%MAXQSIZE.;     ______;     return 1;     }/*DeQueue*/