:
endl;}
};
intmain()
{Aa[4],b,*p;}
会输出多少个A?
(C)
A.2
B.3
C.5
D.6
6、派生类的对象对它的基类成员中哪些是可以访问的?
(DE)
A.公有继承的成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员
E.私有继承的公有成员
7、下面派生类的虚函数的重新声明哪些是良好的?
()
A.Base*Base:
:
copy(Base*);
Base*Derived:
:
copy(Derived*);
B.Base*Base:
:
copy(Base*);
Base*Derived:
:
copy(Base*);
C.ostream&Base:
:
print(int,ostream&=cout);
ostream&Derived:
:
print(int,ostream&);
D.voidBase:
:
eval()const;
voidDerived:
:
eval();
*8、已知下列类层次结构,他们都定义了缺省的构造函数(CD)
classX{};
classA{};
classB:
publicA{};
classC:
privateB{};
classD:
publicX,publicC{};
D*pd=newD;
对于下列哪些转换是不允许的?
A.X*px=pd;
B.B*pb=pd;
C.A*pa=pd;
D.C*pc=pd;
9、在对语音话单文件进行取话单字段信息操作时,需要用刀lseek函数,在lseek函数的
(intfiledes,off_toffset,intwhence)参数中,若whence参数为SEEK_CUR,则offset参数代表下列的哪个含义(B)
A.将该文件的位移量设置为距文件开始处offset个字节。
B.将该文件的位移量设置为其当前值加offset,offset可为正或负。
C.将该文件的位移量设置为文件长度加offset,offset可为正或负。
D.将该文件的位移量设置文件起始位置。
10、在打开一个ASCII文本格式的语音清单文件时,需要用到open函数,在open函数的oflag参数中,下面的哪个选项代表“若此文件不存在则创建它”的含义(B)
A.O_APPEND
B.O_CREAT
C.O_EXCL
D.O_TRUNC
二、问答题(共38分)
1、(5分)头文件中的ifndef/define/endif有什么作用?
避免重定义
2、(6分)const有什么用途?
(请至少说明两种)
防止传递的函数参数不被修改提高程序健壮性
创建数组常量、指针常量、指向常量的指针
3、(8分)如下的字符串函数,用于生存一个字符串”连接号码异常”,并返回它的指针
char*strfun()
{
charstr[20];
strcpy(str,“连接号码异常”);
printf(“%s\n”,str);//printf语句1
returnstr;
}
main()
{
char*pstr=strfun() ;
printf(“%s\n”,pstr);//printf语句2
}
问题1 :
printf语句1和printf语句2哪个能在屏幕上正在打印出来?
问题2 :
如果不能正常在屏幕上打印出字符串,请说明原因。
问题3:
如果不修改strfun的声明,请问该如何修改上述程序的错误。
4、(7分)下面是交换两个double型数据的函数,
swap(double*p1,double*p2)
{
double*p;
*p=*p1;
*p1=*p2;
*p2=*p;
}
main()
{
doublea=0.1;
doubleb=0.2;
swap(&a,&b);
}
请找出上述代码的错误,指出错误的原因,并改正。
5、(7分)如果Win32程序的消息处理函数的定义由
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
修改为
LRESULTCALLBACKWndProc(MSGmsg)
//MSG结构体中的成员变量包含有hWnd、message、wParam和lParam等
这种修改可行吗?
为什么?
6、(5分)MFC中,CWnd类作为所有窗体封装类的根类,它定义的一些成员函数名称与Win32API函数名称完全相同,且功能也完全相同,如ShowWindow、UpdateWindow等。
但函数参数却不同,如:
CWnd类——BOOLShowWindow(intnCmdShow);
Win32API——BOOLShowWindow(HWNDhWnd,intnCmdShow);
问题:
为什么CWnd:
:
ShowWindow函数少了一个参数也能实现相同的功能
三、程序题(共30分)
1、(14分)在计费系统的预处理程序中,对话单进行格式转换时,需要使用strcpy函数已知strcpy,此函数的原型是
char*strcpy(char*strDest,constchar*strSrc);
其中strDest是目的字符串,strSrc是源字符串。
编写strcpy函数
(1)不调用C++/C的字符串库函数,请编写函数strcpy
(2)strcpy能把strSrc的内容复制到strDest,为什么还要char*类型的返回值?
2、(16分)在电信业务的后台处理程序中,经常会涉及到处理字符串,除了用char*处理字符串之外,C++还为我们提供了封装了的字符串类string,其本质也是用一个动态数组来保存字符串,类String的原型为:
classString
{
public:
String(constchar*str=NULL);//普通构造函数
String(constString&other);//拷贝构造函数
~String(void);//析构函数
String&operate=(constString&other);//赋值函数
private:
char*m_data;//用于保存字符串
};
请编写String的上述4个函数普通构造函数、拷贝构造函数、析构函数和赋值函数。