c++模拟题14.docx
- 文档编号:23549299
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:41
- 大小:29.04KB
c++模拟题14.docx
《c++模拟题14.docx》由会员分享,可在线阅读,更多相关《c++模拟题14.docx(41页珍藏版)》请在冰豆网上搜索。
c++模拟题14
模拟题一
一、判断对错题(10%)(对√,错×)
()1.自动变量用堆方式创建,它与块共存亡。
()2.运算符+=是右结合的。
()3.表达式cout<<99的类型为int。
()4.++i是左值,但i++不是左值。
()5.Y[I][J]与*(*Y+I)+J不等价。
()6.从外部看类的private成员和protected成员有区别。
()7.运算符&不可以重载。
()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。
()9.2.0/-3.0是一个正确的表达式。
()10.字符'\12'的ASCII为12。
二、填空题(20%)
#include
typedefstructnode
{
longdata;
node*next;
};
classstack
{
private:
node*head;
①__________
stack();
~stack();
voidpush(②__________);
③__________pop();
④__________print();
};
stack:
:
stack()
{head=new⑤__________
head->next=⑥__________}
stack:
:
~stack()
{
node*p;
p=head;
while(p)
{
head=head->next;
⑦__________
p=head;
}
}
voidstack:
:
push(longx)
{
node*p=newnode;
p->data=x;
p->next=head->next;
⑧__________=p;
cout<<"Push"< "< } longstack: : pop() { node*p=head->next; if(p! =NULL) { longx=p->data; head->next=p->next; ⑨__________ cout<<"pop"< "< returnx; } else cout<<"Stackisempty! "< return0; } voidstack: : print() { node*p=head->next; cout<<"Stack_Top"< while(p) { cout< ⑩__________; } cout<<"Stack_bottom"< } 三、简答题(20%)(按条列出论点) 1.注解。 2.new运算。 3.宏定义。 4.private成员。 5.构造函数。 四、程序设计题(50%) 1.写一基于文件流的程序,删除C++源程序中的单行注解。 要求: C++源程序文件名和删除单行注解后的文件名均在命令行中给出。 2.已知A[N]是整数数组,试以递归函数实现求N个整数之和。 3.请为Fraction类(分数类)定义下列重载运算符函数(注意函数原型) ⑴复合赋值运算+=。 ⑵等于运算=。 ⑶插入运算<<。 classFraction { private: intfz;//分子 intfm;//分母 public: … }; 模拟题一参考答案 一、判断对错题(10%) 本题共10分,每题1分。 ①× ②√ ③× ④√ ⑤√ ⑥√ ⑦× ⑧√ ⑨√ ⑩× 二、填空题(20%) 本题共20分,每空2分。 答案只少“;”或“: ”等符号的给1分。 ①public: ②long ③long ④void ⑤node; ⑥NULL; ⑦deletep; ⑧head->next ⑨deletep; ⑩p=p->next 三、简要论述题(20%) 本题共20分,每题4分。 概念解释正确给2分;论述要求有两条论点,每条给1分 (非参考答案中的论点只要正确同样给分)。 ⑴注解 。 写程序者为读程序者作的说明。 。 C++编译器把所有的注解视为空白。 。 注解有多行注解(/**/)和单行注解(//)。 。 注解通常用来说明程序或模块的名称、用途、编写时间、编写人、变量说明和算法说明等。 ⑵new运算 。 new是个单目运算,功能是给程序实体动态地分配空间。 。 语法格式X类型指针=newX类型。 。 用new申请空间的同时还可以进行初始化。 。 用new申请的空间可用delete运算收回。 ⑶宏定义 。 宏定义就是用一个宏名字来命名一个字符串。 。 编译预处理时宏名将被用宏体简单替换。 。 使用宏定义可以提高程序的可读性、可修改性与可移植性。 。 宏定义可以带参数。 ⑷private成员 。 private成员为类成员的一种类型。 。 private成员只能由类作用域中的函数访问。 。 基类的private成员在派生类中也是不可见的。 。 private成员只能通过public成员访问。 ⑸构造函数 。 构造函数是类的一种特殊成员。 。 构造函数用来创建类的对象(实例)。 。 构造函数具有特定的名字-与类名相同。 。 构造函数可以重载。 四、程序设计题(50%) 本题共50分。 (第1、2题各10分;第3题有3小题,每小题10,分共计30分。 ) 每题评分细则: ①函数原型正确3分(函数返回值类型1分,函数参数类型和个数2分)。 ②函数总体结构正确4分(函数的总体结构指主要的循环结构和选择结构)。 ③其他3分(实现的细节)。 1. #include #include voidmain(intargc,char*argv[]) { if(argc! =3)exit (1); charc0,c1=''; intk=1; ifstreamin(argv[1],ios: : in|ios: : binary); ofstreamout(argv[2],ios: : out|ios: : binary); while(! in.eof()) { in.read(&c0,1); if(k&&c0=='/'&&c1=='/')k=0; if(! k&&c0=='\x0d')k=1; if(k&&c1=='/'&&c0! ='/')out.write(&c1,1); if(k&&c0! ='/')out.write(&c0,1); c1=c0; } in.close(); out.close(); } 2. inttga(int*a,intn) { if(n<1)return(0); elsereturn(a[n-1]+tga(a,n-1)); } 3. ① fraction&fraction: : operator+=(fraction&f) { fz=fz*f.fm+fm*f.fz; fm=fm*f.fm; return*this; } ②intoperator==(fraction&f1,fraction&f2) { if(f1.fz==f2.fz&&f1.fm==f2.fm) return1; else return0; } ③ostream&operator<<(ostream&os,fraction&f) { os< returnos; } 模拟题二 一、判断对错题(10分)(对√,错×) ()1.在类定义中不允许对所定义的数据成员进行初始化。 ()2.程序中不能直接调用构造函数,在创建对象时系统自动调用构造函数。 ()3.从外部看类的private成员和protected成员没有区别。 ()4.可以将派生类对象赋给基类对象,也可以将基类对象赋给派生类对象。 ()5.构造函数和析构函数都不能为虚函数。 ()6.C++按列优先存放数组元素。 ()7.1/2的值等于0.5。 ()8.基类的protected成员经过protected派生后,在派生类中仍为protected成员。 ()9.所有运算符都可以重载。 ()10.表达式cout<<99的类型为int。 二、单项选择题(20分) 1.下列有关类的说法不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数才能存取类中的私有数据 C.在类中,如果不作特别说明,所有的数据均为私有类型 D.在类中,如果不作特别说明,所有的成员函数均为公有类型 2.在C++程序中,对象之间的相互通信通过()。 A.继承实现B.调用成员函数实现 C.封装实现D.函数重载实现 3.对于任意一个类,析构函数的个数有()。 A.0B.1C.不确定D.2 4.在下列各函数中,不是类的成员函数的是( )。 A.构造函数B.析构函数 C.友元函数D.拷贝构造函数 5.在多基继承的构造函数定义中,几个基类的构造函数之间用()分隔。 A. : B. ; C. , D. : : 6.若类A和类B的定义如下: classA { inti,j; public: voidget(); //... }; classB: A { intk; public: voidmake(int); //... }; voidB: : make(intj) { k=i*j; } 则上述定义中,非法的表达式是()。 A.voidget();B.intk;C.voidmake(int)D.k=i*j; 7.已知: print函数是一个类的常成员函数,它无返回值,下列表示中正确的是( )。 A.constvoidprint()B.voidconstprint() C.voidprint(const)D.voidprint()const 8.在类外部可以用p.a的形式访问派生类对象p的基类成员a,则a应是()。 A.私有继承的公有成员B.公有继承的私有成员 C.公有继承的保护成员D.公有继承的公有成员 9.下列关于运算符重载的描述中,正确的叙述是()。 A.运算符重载可以改变运算数的个数 B.运算符重载可以改变语法结构 C.运算符重载可以构造新的运算符 D.运算符重载不可以改变优先级和结合性 10.下列带缺省值参数的函数说明中,正确的说明是()。 A.intFun(intx=1,inty=2,intz); B.intFun(intx,inty=2,intz=3); C.intFun(intx,inty=2,intz); D.intFun(intx=1,inty,intz=3); 三、完成程序题: 根据题目要求,完成程序填空。 (20分) 1.本程序在3位正整数中寻找符合下列条件的整数: 它既是完全平方数,又有两位数字相同,例如144,676等。 用程序找出所有满足上述条件的3位数并输出。 intflag(inta,intb,intc) { return! ((__________)*(__________)*(__________)); } voidmain() { intn,k,a,b,c; for(k=1;;k++) { ___________; if(n<100)_________; if(n>999)_________; a=n/100; b=(n/10)%10; c=n%10; if(flag(a,b,c)) cout< } } 2.类CPoint中的成员函数Init的功能是用已知对象给另一对象赋值,请将其补充完整。 classCPoint { intx,y; public: CPoint(inti,intj){x=i;y=j;} voidInit(CPoint&k) { if(________)return;//防止自身赋值 _______=k; } }; 3.补充以下类,使其能正确运行。 #include classP { private: intx1,x2; staticinty; public: P(__________________){x1=i;x2=j;} }; ___________=0;//对静态成员y赋值 voidmain() { Pdata[20]; } 4.在下面程序横线处填上适当的字句,使其输出结果为0,56,56。 #include classbase { public: intfunc(){return0;} }; classderived: publicbase { public: inta,b,c; setValue(intx,inty,intz){a=x;b=y;c=z;} intfunc(){return(a+b)*c;} }; voidmain() {baseb; derivedd;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 模拟 14