C++程序设计模拟题及答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
。
void main() { int k = 8; { int i = 3; k += fun(i); } k += fun(i); cout << k; }
2、下面程序的输出结果是 #include <iostream > using namespace std; void swap( int &v1, int &v2) { int temp ; temp = v2; v2 = v1; v1 = temp; } void swap( int *v1, int *v2) { int temp; temp= *v2; *v2 = *v1; *v1 = temp; } void main() { int i = 18; int j = 20; swap(i,j); swap(&i,&j); cout<<i<<","<<j<<endl; }
infile.open (argv[1],ios::in); outfile.open(argv[2], (5) );
if (!infile) { cout<<"infile open error!\n"; return ; } if (!outfile) {cout<<"outfile open error!\n";return ;} while (infile.get(c)) (6) infile.close(); (7) } ; ;
第 1 页 共 12
)
) C、( )
页
D、? :
9、下列函数参数默认值定义错误的是( ) A、 Fun(int x,int y=0) B、 Fun(int x=100) C、 Fun(int x=0,int y) D、 Fun(int x=f( )) (假定函数 f( )已经定义) 10、下列情况中,哪一种情况不会调用拷贝构造函数 ( ) A、用派生类的对象去初始化基类对象时 B、将类的一个对象赋值给该类的另一个对象时 C、函数的形参是类的对象,调用函数进行形参和实参结合时 D、函数的返回值是类的对象,函数执行返回调用者时
________________;
// 类定义的结束
void main( ) { Student wang("wang"); Student li(wang); }
得分
五、编程题。 (共 26 分)
姓名
1、编写模板函数min_value( )分别求三个整数,三个双精度数,或者数值 类型的三个数据,函数的返回值是这几个数中的最小的值。 (本小题8分)
第 10
页 共
12 页
3、自定义的复数类声明如下,要实现主函数的代码,请把复数类中声明 的函数代码补充完整。(本小题10分) #include<iostream> using namespace std; class complex //复数类声明 { public: complex(double r=0.0,double i=0.0) { real=r; imag=i; } complex operator + (complex c2); complex operator - (complex c2); friend complex operator + (int i ,complex c2); private: double real; //复数实部 double imag; //复数虚部 }; void main() //主函数
)
) D、virtual
3、下列有关继承和派生的叙述中,正确的是( ) A、派生类不能访问通过私有继承的基类的保护成员 B、派生类不能访问通过保护继承的基类的公有成员 C、派生类对象不能访问通过私有继承的基类的公有成员 D、派生类对象不能访问通过公有继承的基类的公有成员 4、以下哪个关键字对应的属性破坏了程序的封装性( ) A、const B、friend C、public Dቤተ መጻሕፍቲ ባይዱprotected 5、在下列关于 C++函数的叙述中,正确的是( A、每个函数至少要有一个参数 B、每个函数都必须返回一个值 C、函数在被调用之前必须先声明 D、函数不能自己调用自己 6、对于类的常成员函数的描述正确的是( ) A、 常成员函数不能访问类的数据成员 B、常成员函数可以对类的数据成员进行修改 C、常成员函数只能由常对象调用 D、常成员函数不修改类的数据成员 7、下列关于 new 运算符的描述中,哪个是错误的? ( ) A、它可以用来动态创建对象和对象数组; B、使用它创建的对象或对象数组,可以使用 delete 删除; C、使用它创建对象时要调用构造函数; D、使用它创建对象数组时必须指定初始值。 8、下列运算符中,哪一个不能重载? ( A、<< B、>>
第 11 页 共 12 页
。
3、下面程序的输出结果是 #include <iostream>
第 3 页 共 12 页
。
using namespace std; class Base { public: Base(int i) { cout << i; } }; class Base1: virtual public Base { public: Base1(int i, int j=1) : Base(j) { cout << i; } }; class Base2: virtual public Base { public: Base2(int i, int j=2) : Base(j) { cout << i; } }; class Derived : public Base2, public Base1 { public: Derived(int a, int b, int c, int d):member1(a),member2(b),Base1(c),Base2(d), Base(a) { cout << d; } private: Base1 member1; Base2 member2; }; void main() { Derived objD (3, 4, 5, 6); }
得分
二、填空题。在题中“
”处填上答案。 (本大题共 5 小题,共 10 分)
1、类的三大基本特征是:类的封装性、多态性和_ 2.在 C++中,不能为 类定义对象。 。 联编。
_。
3.在定义派生类时,默认的继承方式是 4.构造函数中调用虚函数时,采用 5、在 ifstream 的构造函数中其默认的打开方式为
。
得分
三、程序阅读。 (每题 5 分,共 20 分)
1、下面程序的输出结果是 #include <iostream> using namespace std; int i = 10; int fun(int n) { static int a = 6; a++; return a+n; }
第 2 页 共 12 页
第 6 页 共 12 页
POINTH
#include <iostream> using namespace std; void main(int count,(3) { char c; ifstream infile; ofstream outfile; if ((4) ){cout<<"参数个数不对!\n";return;} )
4、下面程序是一个学生类的定义,可以使用一个已有的对象来初始化新 的对象,请把程序补充完整。 #include <string> #include <iostream> using namespace std; class Student { private: char *name; public: Student(char *na) // 构造函数 { name=new(8) ; if(name!=0) {
第 4
页 共 12 页
4、下面程序的输出结果是 #include <iostream> using namespace std; class Base { public: virtual void f( ) { cout << "Bf"; } void g( ) { cout << "Bg"; } }; class Derived : public Base { public: void f( ) { cout <<"Df"; } void g( ) { cout << "Dg"; } }; void main() { Derived d; Base *p = &d; p->f(); p->g(); }
一、选择题。在题后括号内,填上正确答案代号。 (本大题共 10 小题,每 得分 小题 2 分,共 20 分)
1、下列有关内联函数的叙述中,正确的是 ( A、内联函数在调用时发生控制转移 B、使用内联函数有利于代码重用 C、必须通过关键字 inline 来定义 D、是否最后内联由编译器决定 2、以下哪一关键字可用于重载函数的区分( A、extern B、static C、const
学号
第 8
页 共 12 页
第 9
页 共 12 页
2、 声明矩形类 Rectangle。 已知该类有左上角坐标的成员数据为 myPoint, 高 high、宽 width 都为 double 类型。(本小题 8 分) 对应代码如下,请完成 Rectangle 类的两个构造函数的实现: #include <iostream> using namespace std; class myPoint //myPoint类定义 { public: myPoint(int xx, int yy) { X=xx; Y=yy; } myPoint(myPoint &p) { X=p.X; Y=p.Y; } private: int X,Y; }; class Rectangle { private: myPoint lefttop; double Height; double Width; public: Rectangle(int x,int y,double w,double h); Rectangle(Rectangle &r); }; //补充代码:
。
得分
四、程序填空。 (每空 2 分,共 24 分)
1、下面是个Cat类的声明与使用,请补充完整。 #include <iostream>
第 5 页 共 12 页
using namespace std; class Cat { static int count; public: Cat( ) { count++; cout << "Now cat number is" <<count << endl; } ~Cat() { count--; cout << " Now cat number is " << count << endl; } }; (1) =0; int main() { Cat a, b, c; return 0; } 2、 已知文件之间具有以下的包含关系 (用#include指令) ; Rectangle.cpp 包含 Rectangle.h,Rectangle.cpp 同时包含 Point.h,Rectangle.h包含 Point.h。那么如下的Point.h文件缺少什么语句,请补充完整。 //Point.h文件 #ifndef (2) class Point { ... }; #endif 3、使用命令行参数来编写主函数实现 copy 功能,编译完生成可执行程序 copy.exe;在运行 copy.exe 时指定需要拷贝的文件。 例如 D:\copy.exe test1.txt text2.txt //copy.cpp #include <fstream>
第 7 页 共 12 页
( 9) }
;
………………………………………………装订线……………………………………………………………………………………
} Student(Student & p) { name= _(10)_________________________; if(name!=0) (11)__ __________________; } ~Student() { (12)__ } };