简答题

课程名称:程序员

题目:阅读以下说明和Java程序,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]对部分乐器进行建模,其类图如下图所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed)、木管乐器(Woodwind)、铜管乐器(Brass)。类图下面是实现上述设计的Java代码,其中音乐类(Music)使用各类乐器(Instrument)进行演奏和调音等操作。 [Java代码]     enum Note{/*枚举各种音调*/     MIDDLE_C,C_SHARP,B_FLAT;    //其他略     }     interface Instrument {/*接口,乐器*/     ______;    //play方法接口     void adjust();    //adjust方法接口     }     class Wind ______ {     public void play(Note n) { System.out.println("Wind.play()"+n);  }     public void adjust() {System.out.println("Wind.adjust()");}     }     /*类Percussion和Stringed实现代码略*/     class Brass ______ {     public void play(Note n) {System.out.println("Brass.play()"+n);  }     public void adjust(){System.out.println("BrasS.adjust()");)     }     Class Woodwind extends Wind{     publicvoidplay(Note n) {System.out.println("Woodwind.play()"+n);  }     }     public class Music{     void tune(Instrument_i){i.play(Note.MIDDLE_C.;  }     void adjust(Instrument i){i.adjust();  }     void tuneAll(______ e){     for(Instrument i:e){     adjust(i);     tune(i);     }     }     public Static void main(String[] args){     Music music= ______ Music();     Instrument[] orchestra={new Wind(),  new Woodwind()  };     music.tuneAll(orchestra);     }     }本程序运行后的输出结果为: Wind.adjust()     Wind.play() MIDDLE_C     Wind.adjust()     Woodwind.play()MIDDLE_C

简答题

课程名称:程序员

题目:阅读下列说明、C++代码和运行结果,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]对部分乐器进行建模,其类图如下图所示,包括:乐器(Instrument)、管乐器(Wind)、打击乐器(Percussion)、弦乐器(Stringed)、木管乐器(Woodwind)、铜管乐器(Brass)。类图下面是实现上述设计的C++代码,其中音乐类(Music)使用各类乐器(Instrument)进行演奏和调音等操作。 using namespace std;     enum Note(/*枚举各种音调*/     MIDDLE_C,C_SHARP,B_FLAT     };     class Instrument{/*抽象基类,乐器*/     public:     ______;   //play函数接口     virtual void adjust()=0;    //adjust函数接口     };     class Wind ______ {     public:     void play(Note n)  { cout<<"Wind.play()  "<<n<<endl;    }     void adjust() {cout<<"Wind.adjust()"<<endl;    }     );     /*类Percussion和Stringed实现代码略*/     class Brass ______{     public:     void play(Note n)  {cout<<"Brass.play()  "<<n<<endl;  }     void adjUSt() {cout<<"Brass.adjust()"<<endl;)     };     class Woodwind:public Wind{     public:     void play(Note n)  {  cout<<"Woodwind.play()"<<n<<endl;  }     };     class MusiC {     public:     void tune(Instrument*i)  {  i->play(MIDDLE_C.;  }     void adjust(Instrument*i){    i->adjust();    }     void tuneAll( ______ e[],int numIns){    /*为每个乐器定调*/     for(int i=0; i<numIns; i++){     this->tune(e[i]);     this->adjust(e[i]);     }     }     };     /*使用模板定义一个函数size,该函数将返回数组array的元素个数,实现代码略*/     int main(){     Music*music= ______ Music();     Instrument* orchestra[]={new Wind(),new Woodwind()  };     music->tuneAll(orchestra,size(orchestra));/*size返回数组orchestra的元素个数*/     for(int i=0;i<size(orchestra);i++)     delete orchestra[i];     delete music;     } 本程序运行后的输出结果为: Wind.play()0     Wind.adjust()     Woodwind.play()0     Wind.adjust()

简答题

课程名称:程序员

题目:阅读以下说明和C函数,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数ReverseList(LinkList headptr)的功能是将含有头结点的单链表就地逆置。处理思路是将链表中的指针逆转,即将原链表看成由两部分组成:已经完成逆置的部分和未完成逆置的部分,令s指向未逆置部分的第一个结点,并将该结点插入已完成部分的表头(头结点之后),直到全部结点的指针域都修改完成为止。例如,某单链表如图1所示,逆置过程中指针s的变化情况如图2所示。链表结点类型定义如下: typedef struct Node{     int data;     Struct Node *next;     }Node,*LinkList;     [C函数]     void ReverseList (LinkList headptr)     {  //含头结点的单链表就地逆置,headptr为头指针     LinkList p,s;     if(______)  return;    //空链表(仅有头结点)时无需处理     P=______;    //令P指向第一个元素结点     if(!P->next)  return;    //链表中仅有一个元素结点时无需处理     s=p->next;    //s指向第二个元素结点     ______ =NULL;    //设置第一个元素结点的指针域为空     while(s){     p=s;    //令p指向未处理链表的第一个结点     s= ______;     p->next=headptr->next;    //将p所指结点插入已完成部分的表头     headptr->next= ______;     }     }

简答题

课程名称:程序员

题目:阅读以下说明和C程序,填补代码中的空缺,将解答填入答题纸的对应栏内。[说明]函数areAnagrams(char *fstword,char *sndword)的功能是判断fstword和sndword中的单词(不区分大小写)是否互为变位词,若是则返回1,否则返回0。所谓变位词是指两个单词是由相同字母的不同排列得到的。例如,"triangle"与"integral"互为变位词,而"dumbest"与"stumble"不是。函数areAnagrams的处理思路是检测两个单词是否包含相同的字母且每个字母出现的次数也相同。过程是先计算第一个单词(即fstword中的单词)中各字母的出现次数并记录在数组counter中,然后扫描第二个单词(即sndword中的单词)的各字母,若在第二个单词中遇到与第一个单词相同的字母,就将相应的计数变量值减1,若在第二个单词中发现第一个单词中不存在的字母,则可断定这两个单词不构成变位词。最后扫描用于计数的数组counter各元素,若两个单词互为变位词,则counter的所有元素值都为0。函数areAnagrams中用到的部分标准库函数如下表所述。 [C函数]      int areAnagrams(char *fstword,  char *sndword)      {      int index;      int counter [26]={0);  /*counter[i]为英文字母表第i个字母出现的次数,      'A'或'a'为第0个,'B'或'b'为第1个,依此类推*/      if(______)    /*两个单词相同时不互为变位词*/      return 0;      while (*fstword){    /*计算第一个单词中各字母出现的次数*/      if (isalpha(*fstword)){      if (isupper (*fstword))      counter [*fstword -'A']++;      else      counter [*fstword-'a']++;      ______;    /*下一个字符*/      }      }      while (*Sndword){      if (isalpha (*sndword)) {      index=isupper (*sndword)?* sndword -'A':*sndword-'a';      if(counter [index])      counter [index]--;     elSe      ______;      }      ______;    /*下一个字符*/      }      for (index=0;index<26; index++)      if(______)      return 0;      return 1;      }