问答题试题六(共15分)阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明】以下C++代码实现一个简单的聊天室系统(ChatRoomSystem),多个用户(User)可以向聊天室(ChatRoom)发送消息,聊天室将消息展示给所有用户。类图如图6-1所表示。【C++代码】#include#includeusingnamespacestd;classUser{private:stringname;public:User(stringname){(1)=name;}~User(){}voidsetName(stringname){this->name=name;}stringgetName(){returnname;}voidsendMessage(stringmessage);};classChatRoom{.public:staticvoidshowMessage(User*user,stringmessage){coutgetName()"]:"sendMessage("Hi!Leo!");li_>sendMessage("Hi!John!");}voidjoin(User*user){(3)("HeIIoEveryone!lam"+user->getName());.;}.};intmain(){ChatRoomSystem*crs=(4);crs->startup();crs->join((5)("Wayne"));deletecrs;}/*程序运行结果:[John]:Hi!Leol[Leo]:Hi!John![Wayne】:HelloEveryone!IamWayne/*
问答题如何寻找出数列中缺失的数
问答题top K问题
问答题sleep()方法与wait()方法有什么区别
问答题当while()的循环条件是赋值语句时会出现什么情况
问答题Java是否存在内存泄露问题
问答题如何把一个数组循环右移k位
问答题会话跟踪技术有哪些
问答题含参数的宏与函数有什么区别
问答题 阅读下列程序说明和C程序,把应填入其中(n)处的字句,写在对应栏内。
【程序说明】
已知某二叉树的前序遍历和中序遍历序列,可以得到该二叉树的结构。本程序实现了根据这两个遍历序列生成一棵链接表示的二叉树。
构造二叉树的算法要点是:由前序遍历序列,该序列的第一个元素是根结点元素。该元素将中序遍历序列分成左、右两部分,那些位于该元素之前的元素是它的左子树上的元素,位于该元素之后的元素是它的右子树上的元素。对于左、右子树,由它们的前序遍历序列的第一个元素可确定左、右子树的根结点,参照中序遍历序列又可进一步确定子树的左、右子树元素。如此递归地参照两个遍历序列,最终构造出二叉树。
两个遍历序列作为主函数main()的参数。为简单起见,程序假定两个遍历序列是相容的。主函数调用函数restore()建立二叉树。函数restore()以树(子树)的前序遍历和中序遍历两序列及序列长为参数,采用递归方法建立树(子树)。函数postorder()实现二叉树的后序遍历序列输出,用来验证函数restore()建立的二叉树。
【程序】 #include(stdio.h>
#include<stdlib.h> #define MAX 100 typedef
struct node{ char data;
struet node * llink,*rlink; }TNODE;
charpred[MAX],inod[MAX]; TNODE * restore
(Char*,char*,int); main(int argc,Char* *argv)
{ TNODE * root;
if(argc<3)exit(0);
strcpy(pred,argv[1]);
strcpy(inod,argv[2]);
root=restore(pred,inod,strlen(pred))postorder(root);
printf("/n/n"); } TNODE *
restore(Char * ppos,char * ipos,int n) {
/*参数包括前序遍历序列数组和中序遍历数组*/ TNODE *
ptr; Char * rpos;
int k; if(n <=0)return NULL;
ptr= (TNODE *)malloc(sizeof(TNODE));
ptr→data={{U}} (1) {{/U}};
for{{U}} (2) {{/U}}rpos=ipos;rpos <ipos+n;rpos++
) if(*rpos== * ppos)break;
k ={{U}} (3) {{/U}};
ptr→llink = restore(ppos+1,{{U}} (4) {{/U}},k);
ptr→rlink = restore{{U}} (5) {{/U}}+ k,rpos +
1,n-1-k); return ptr;
} postorder(TNODE *ptr) {
if(ptr==NULL)return;
postorder(ptr→llink);
postorder(ptr→rlink);
prinft("%c",ptr→data); }
问答题如何自定义内存复制函数memcpy()
问答题如何判断二叉树是否是平衡二叉树
问答题虚拟地址、逻辑地址、线性地址、物理地址有什么区别
问答题什么是DFS?什么是BFS
问答题编译和链接的区别是什么
问答题如何用两个栈模拟队列操作
问答题在Visual Basic中,标准模块文件、窗体文件和工程文件的扩展名是什么?请从下列选项中选择:
prg、prj、exe、vbp、form、frm、win、fra、std、bas、vbs、vbm
2.设某窗体上有一个命令按钮,其名称为Command Save,运行时该按钮上显示有“保存(S)”字样的信息。为使热键Alt+S与该命令按钮相关联,应该对按钮Command Save的Caption属性设置什么样的属性值?
3.设某窗口内有一个图像框Image Frame,以及两个命令按钮“放大”和“缩小”。单击“放大”按钮就会使该图像框的长和宽都放大20%;单击“缩小”按钮就会使该图像框的长和宽都缩小 20%(该图像框的左上角不动)。请分别写出这两个命令按钮的单击事件过程中的程序代码。
4.为使某个单选按钮初始时默认被选中,在开发时应怎样做?
5.若有语句Temp Value = Mag Box(“操作错误!”,vbOKCancel+vbCritical,“提示”),请简要描述程序运行时弹出的消息框的主要特征。
问答题不使用if/:?/switch及其他判断语句如何找出两个int型变量中的最大值和最小值
问答题排序问题
问答题#define TRACE(S)(printf("%s/n",#s),s)是什么意思
