问答题
阅读下列说明、图和C++代码,回答问题1至问题3。
【说明】
已知四个类之间的关系如图2-2所示,分别对每个类的方法进行编号,例如Shape的perimeter()方法为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为2:perimeter(),依此类推,其中,每个类的perimeter方法都为虚函数且方法签名相同。
【C++代码】
Triangle *tr=new Triangle();
Square *sq=new Square();
Shape *sh =tr;
【问题1】 关于上述C++代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。
①sh和tr分别引用同一个对象;
②sh和tr分别引用同一类型的不同的对象:
③sh和tr分别引用不同类型的不同对象;
④sh和tr分别引用同一个对象的不同备份:
⑤sh和tr所引用的内存空间是相同的。
【参考答案】
① ⑤
点击查看答案
<上一题
目录
下一题>
热门
试题
问答题
【说明】某电信公司记录了每个用户的详细通话情况(每次通话数据记录在一行),现将某用户某月的通话数据存入一个文本文件dial.txt,其数据格式如下:拨入或拨出标记通话开始时间通话结束时间对方号码 注1:数据字段以一个空格作为分隔符。注2:拨入和拨出标记均为小写字母。拨入标记为i,表示其他用户呼叫本机,本机用户不需付费:拨出标记为o,表示本机呼叫其他用户,此时本机用户需要付费。注3:通话开始和结束时间的格式均为HH:MM:SS。其中HH表示小时,取值00~ 23;MM表示分钟,取值00~59;SS表示秒,取值00~59。从通话开始到结束这段时间称为通话时间,假定每次通话时间以秒为单位,最短为1秒,最长不超过24小时。注4:跨月的通话记录计入下个月的通话数据文件。例如“o23:01:1200:12:15…”表示本次通话是本机呼叫其他用户,时间从23时01分12秒至次日的0时12分15秒,通话时间为71分03秒。下面程序的功能是计算并输出该用户本月电话费(单位:元)。通话计费规则为:1.月通话费按每次通话费累加;2.每次的通话费按通话时间每分钟0.08元计算,不足1分钟时按1分钟计费。对于每次的拨出通话,程序中先分别计算出通话开始和结束时间相对于当日0点0分0秒的时间长度(以秒为单位),然后算出本次通话时间和通话费。例如,若输入文件dial.txt的数据如下所示,则输出fee=7.44。o 14:05:23 14:11:25 82346789i 15:10:00 16:01:15 13890000000o 10:53:12 11:07:05 63000123o 23:01:12 00:12:15 13356789001【C程序代码】#include<stdio.h>FILE *fin;Int main(){char str[80];int h1,h2,m1,m2,s1,s2;long t_start,t_end,interval;int c;double fee=0;fin=fopen( dial.txt , r );if (!fin)return-1;while (!feof(fin)) {if (!fgets(str,80,fin)) break;if ( (1) ) continue;h1= (str[2] -48) *10+str[3] -48;m1= (str[5] -48) *10+str[6] -48;s1= (str[8] -48) *10+str[9] -48;h2= (str[11] -48) *10+str[12] -48;m2= (str[14] -48) *10+str[15] -48;s2=(str[17]-48)*10+str[18]-48;t_start=h1*60*60+m1*60+s1; *通话开始时间* t_end=h2*60*60+m2.60+s2; *通话结束时间* if( (2) ) *若通话开始和结束时间跨日* interval; (3) -t_start+t_end;elseinterval=t_end-t_start;c= (4) ; *计算完整分钟数表示的通话时间* if (interval % 60)(5) ;fee+=c*0.08;}fclose(fin);printf( fee=%.2lf n ,fee);return 0;}
点击查看答案
问答题
【说明】已知包含头结点(不存储元素)的单链表的元素已经按照非递减方式排序,函数 compress(NODE*head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。处理过程中,当元素重复出现时,保留元素第一次出现所在的结点。图2-1(a)、(b)是经函数compress()处理前后的链表结构示例图。链表的结点类型定义如下:typedef struct Node{int data;struct Node *next;}NODE;【C语言函数】void compress(NODE *head){ NODE *ptr,*q;ptr= (1) ; *取得第一个元素结点的指针* while( (2) && ptr->next) {q=ptr->next;while(q&& (3) ) { *处理重复元素* (4) q->next;free(q);q=ptr->next;}(5) ptr->next;} *end of while * } *end of compress*
点击查看答案
相关试题
【问题3】 下列赋值语句中哪两个是合法的...
【问题2】 写出下面消息对应的方法编号(...
【问题3】 不考虑内存释放问题,下列赋值...
【问题1】 关于上述Java代码中sh和tr的以...
【应用说明】 某电视台拟开发应用程序来显...