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.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 }; 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 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 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