C++复习资料(3)

2019-04-21 20:35

classMyException { public: MyException() {cout<<\ \} MyException(constMyException& ref) {cout<<\ \} ~MyException() {cout<<\ \} };

voidfunc(){ throwMyException(); }

int main() { try{ func(); cout<<\ \ }catch(MyException& e){ cout<<\ \ } return 0; }

A. A B C D E B. A D B E C C. A E C D. A B E C C

17. 以下关于异常处理的描述错误的是(D) A.C++程序中出现异常时,编译器不会进行提示 B.将可能产生异常的代码放在try语句块内 C. 使用catch关键字接收并处理异常

D. 重抛异常可以在try语句块或者catch语句块中调用throw实现

18. STL中的哪个容器可以使用[ ]运算符进行随机访问?(A) A.vector B set C List Dmultimap 19. 下列程序代码的输出结果是(C ) int main() { deque d(5); for (inti = 0; i

d.insert(d.begin() + 2,22); d.pop_back(); d.erase(d.begin() + 3); for (inti = 0; i

A.0 1 2 3 4 B. 11 0 1 2 3 C. 110 22 2 3D. 11 0 22 1 2

20. 以下哪个函数不属于 STL中的算法?(B) A. for_each() B. insert() C find() D.sort()

函数及编程题

1. 友元函数题

现有一个类Point表示二维空间中的点,包含私有数据成员double x和double y,x表示该点的x坐标,y表示该点的y坐标。要求编写一个友元函数,输出两点之间的距离。 函数接口说明:输出两个点p1和p2之间的距离,要求输出结果必须保留两位小数 void pointDis(Point& p1,Point& p2);

输入说明:

每一行四个数值,前两个数是第一个坐标点的x坐标和y坐标,后两个数是第二个坐标点的x坐标和y坐标。当输入四个0时表示输入结束。 输出说明:

输出距离必须保留两位小数。

输入样例:

1.5 3.8 4.2 8.5 1 3 4 7 0 0 0 0

输出样例: 5.42 5.00

给出代码:

#include #include #include using namespace std; class Point { public: Point() { } Point(double px,doublepy) { x=px; y=py; } friend void pointDis(Point &p1,Point &p2);

};

private: double x; double y;

//请在这里填写答案

int main() { double x1,y1,x2,y2; cin>>x1>>y1>>x2>>y2; Point p1,p2; while(!(x1==0&&y1==0&&x2==0&&y2==0)) { p1=Point(x1,y1); p2=Point(x2,y2); pointDis(p1,p2); cin>>x1>>y1>>x2>>y2; } return 0; }

2. 友元函数题

现有学生类(Student),包含私有数据成员:学号(sno,string类型)、姓名(sname,string类型)及C++考试成绩(cpp_score,double类型)。要求:用类Student建立学生对象数组,不超过100名学生。输入学生的学号、姓名及C++考试成绩,以输入0结束,计算输出所有学生的C++平均成绩。其中,平均成绩用友元函数void average(Student *ps, int count)计算。

注意:(1)以上类名和友元函数的形式,均须按照题目要求,不得修改;(2)结果保留1位小数。

输入样例: 10001 Tom 90 10002 Jerry 93 0

输出样例: 91.5

#include #include #include using namespace std; classStudent {

public: Student (){}; Student (string, string, double);

private: stringsno, sname; doublecpp_score; friend void average(Student *ps,int count); };

Student::Student (string s1, string s2, double s) { sno = s1; sname=s2; cpp_score = s; }

/* 请在这儿编写average函数 */

int main() { Student array[100]; stringsno,sname;

inti = 0; double score; while(true) {

cin>>sno;

if (sno== \

cin>>sname>>score; array[i++] = Student (sno, sname, score); } average(array, i); return 0; }

3. 友元函数题

设计一个时间类,包括hour、minute、second三个成员变量。要求实现一个在类外定义的友元函数display,实现时间的显示,包括可能的构造函数的实现。

#include using namespace std;

class Time {public:

Time(int,int,int);

friend void display(Time &); private: int hour; int minute; int sec;

};

//请在这里编写构造函数和display函数的实现 int main() {

Time t1(10,13,56); display(t1); return 0; }

4. 友元函数题

书上P66,例3-23

5. 运算符重载函数题

现有一个分数类Fraction,拥有两个整数的私有数据成员fz和fm,分别表示分子和分母(分母永远为正数,符号通过分子表示)。要求编写两个函数: 重载运算符加号\,实现两个分数的相加,所得结果必须是最简分数。 重载运算符”>”, 比较第一个分数是否大于第二个分数。 这两个函数为Fraction类的友元函数,函数接口为:

friend Fraction operator+(Fraction &f1,Fraction &f2);

friend bool operator>(Fraction &f1,Fraction &f2); 输入:

第一行的两个数分别表示第一个分数的分子和分母(分母不为0)。第二行的两个数分别表示第二个分数的分子和分母。 输出:

输出两行,第一行输出两个分数相加的结果,第一个数表示分子,第二个数表示分母(若分子为0或分数代表的是整数,则不输出分母);

第二行是输出两个分数的大小,若第一个分数大于第二个分数,则输出true,否则输出false。

输入样例: -2 3 8 9

输出样例: 2 9 false

给出代码:

#include #include using namespace std; class Fraction { public: Fraction(intcfz,int cfm) {


C++复习资料(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:第四单元测试卷1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: