ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:25.14KB ,
资源ID:13733855      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13733855.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C习题课剖析.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C习题课剖析.docx

1、C 习题课剖析习题讲解53.4 编程题7已知用梯形法求积分的公式为:,其中h = ( ba ) / n,n为积分区间的等分数,编程序求如下积分的值。要求把求积分公式编写成一个函数,并使用函数指针作为形式参数。调用该函数时,给定不同的被积函数作为实际参数求不同的积分。 【解答】#include#includeusing namespace std;double f1( double x ) return 4 / ( 1 + x*x ); double f2( double x ) return sqrt( 1 + x*x ); double f3( double x ) return sin(

2、x ); double trap( double( *fun )( double x ), double a,double b,long n ) double t,h; int i; t = ( ( *fun )(a) + ( *fun )( b ) ) / 2.0; h = ( b - a ) / n; for( i=1; i=n-1; i+ ) t += ( *fun )( a + i * h ); t *= h; return t;int main() double t1,t2,t3; t1 = trap( f1,0,1,10000 ); cout t1= t1 endl; t2 = t

3、rap( f2,1,2,10000 ); cout t2= t2 endl; t3 = trap( sin,0,3.14159265/2,10000 ); cout t3= t3 endl;6.4 编程题1定义一个Book(图书)类,在该类定义中包括以下数据成员和成员函数。数据成员: bookname(书名)、price(价格)和number(存书数量)。成员函数: display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。在main函数中,要求创建某一种图书对象,并对该图书进行简单的显示、借阅和归还管理。【解答

4、】#include using namespace std;class Book public: void setBook(char*,double,int); void borrow(); void restore(); void display(); private: char bookname40; double price; int number; ;/在类外定义Book类的成员函数void Book:setBook(char *name, double pri, int num) strcpy(bookname, name); price=pri; number=num; void

5、Book:borrow() if (number=0 ) cout 已没存书,退出! endl; abort(); number = number - 1; cout 借一次,现存书量为: number endl;void Book:restore() number = number + 1; cout 还一次,现存书量为: number endl; void Book:display() cout 存书情况: endl bookname: bookname endl price: price endl number: number endl; int main() char flag, ch

6、; Book computer; computer.setBook( c+程序设计基础 , 32, 1000 ); computer.display(); ch = y; while ( ch = y ) cout flag; switch ( flag ) case b: computer.borrow(); break; case r: computer.restore(); cout ch; computer.display();6.4 编程题2定义一个Box(盒子)类,在该类定义中包括以下数据成员和成员函数。数据成员:length(长)、width(宽)和height(高)。成员函数:

7、构造函数Box,设置盒子的长、宽和高3个初始数据;成员函数setBox对数据成员置值;成员函数volume 计算盒子的体积。在main函数中,要求创建Box对象,输入长、宽、高,输出盒子的体积。【解答】#include using namespace std;class BOX public: BOX( double l, double w, double h ) length = l; width = w; height = h; void volume() cout volume= length * width * height endl; private: double length,

8、width, height; ; int main() BOX box1( 1,3,5 ); box1.volume(); BOX box2( 2,4,6 ); box2.volume();6.4 编程题3定义一个Student类,在该类定义中包括:一个数据成员(分数score)及两个静态数据成员(总分total和学生人数count);成员函数scoretotalcount(double s) 用于设置分数、求总分和累计学生人数;静态成员函数sum()用于返回总分;静态成员函数average()用于求平均值。在main函数中,输入某班同学的成绩,并调用上述函数求全班学生的总分和平均分。【解答】

9、#include using namespace std;class student public:void scoretotalcount( double s ) score = s; total = total + score; count+; static double sum() return total; static double average() return total / count; private:double score;static double total;static double count; ;double student:total=0;double st

10、udent:count=0;int main() int i,n; double s; cout n; student stu; for( i=1; i=n; i+ ) cout 请输入第 i s; stu.scoretotalcount( s ); cout 总分: student:sum() endl;cout 平均分: student:average() endl;6.4 编程题4定义一个表示点的结构类型Point和一个由直线方程y = ax + b确定的直线类Line。结构类型Point有两个成员x和y,分别表示点的横坐标和纵坐标。Line类有两个数据成员a和b,分别表示直线方程中的系

11、数。Line类有一个成员函数print用于显示直线方程。友元函数setPoint(Line &l1,Line &l2)用于求两条直线的交点。在main函数中,建立两个直线对象,分别调用print函数显示两条直线的方程,并调用函数setPoint求这两条直线的交点。【解答】#include using namespace std;struct point double x; double y; ;class line public: line( double u, double v ) a=u; b=v; void print() couty=ax+bendl; friend point set

12、point(line &l1,line &l2);private: double a, b; ;point setpoint( line &l1, line &l2 ) point p;p.x=( l2.b-l1.b )/( l1.a-l2.a );p.y=( l1.a*l2.b-l2.a*l1.b)/(l1.a-l2.a );return p; int main() point setp; line l1(2,3), l2(4,5); cout直线l1: ; l1.print(); cout直线l2: ; l2.print(); setp=setpoint( l1,l2 ); cout直线l

13、1和直线l2的交点:(setp.x,setp.y)endl;8.2 阅读下列程序,写出运行结果1#includeusing namespace std;class Base public :void get( int i,int j,int k,int l )a = i; b = j; x = k; y = l; void print()cout a = a t b = b t x = x t y = y endl;int a, b;protected :int x, y;class A : public Basepublic :void get( int i, int j, int k, i

14、nt l ) Base obj3;obj3.get( 50, 60, 70, 80 );obj3.print();a = i; b = j; x = k; y = l;u = a + b + obj3.a; v = y - x + obj3.b;void print()cout a = a t b = b t x = x t y = y endl;cout u = u t v = v endl;private:int u, v;int main() Base obj1;A obj2;obj1.get( 10, 20, 30, 40 );obj2.get( 30, 40, 50, 60 );ob

15、j1.print();obj2.print();【解答】a = 50 b = 60 x = 70 y = 80a = 10 b = 20 x = 30 y = 40a = 30 b = 40 x = 50 y = 60u = 120 v = 702#includeusing namespace std;class Base1 public : Base1( int i ) cout 调用基类Base1的构造函数: i endl; ;class Base2 public:Base2( int j ) cout 调用基类Base2的构造函数: j endl; ; class A : public

16、Base1, public Base2 public :A( int a,int b,int c,int d ):Base2(b),Base1(c),b2(a),b1(d) cout 调用派生类A的构造函数: a+b+c+d endl; private :Base1 b1;Base2 b2; int main() A obj( 1, 2, 3, 4 ); 【解答】调用基类BASE1的构造函数:3调用基类BASE2的构造函数:2调用基类BASE1的构造函数:4调用基类BASE2构造函数:1调用派生类A的构造函数:109.4编程题1使用虚函数编写程序,求球体和圆柱体的体积及表面积。由于球体和圆柱体

17、都可以看做由圆继承而来,因此,可以把圆类Circle作为基类。在Circle类中定义一个数据成员radius及两个虚函数area和volume。由Circle类派生Sphere类和Column类。在派生类中对虚函数area和volume重新定义,分别求球体和圆柱体的体积及表面积。【解答】#include using namespace std;const double PI=3.14159265;class circle public: circle(double r) radius = r; virtual double area() return 0.0; virtual double v

18、olume() return 0.0; protected: double radius;class sphere:public circle public: sphere( double r ):circle( r ) double area() return 4.0 * PI * radius * radius; double volume() return 4.0 * PI * radius * radius * radius / 3.0; ;class column:public circle public: column( double r,double h ):circle( r

19、) height = h; double area() return 2.0 * PI * radius * ( height + radius ); double volume() return PI * radius * radius * height; private: double height;int main()circle *p;sphere sobj(2);p = &sobj;cout 球体: endl;cout 体积 = volume() endl;cout 表面积 = area() endl;column cobj( 3,5 );p = &cobj;cout 圆柱体: en

20、dl;cout 体积 = volume() endl;cout 表面积 = area() endl;2某学校教职工的工资计算方法为:所有教职工都有基本工资;教师月工资为固定工资+课时补贴。课时补贴根据职称和课时计算。例如,每课时教授补贴50元,副补贴30元,讲师补贴20元。管理人员月薪为基本工资+职务工资;实验室人员月薪为基本工资+工作日补贴。工作日补贴等于日补贴月工作日数。定义教职工抽象类,派生教师、管理人员和实验室类,编写程序测试这个类体系。【解答】#include using namespace std;class staff public: staff ( double bSalary

21、) basicSalary=bSalary; virtual void input() = 0; virtual void output() = 0; protected: char name30; double basicSalary;class teacher : public staff public: teacher( int basicsalary=3000 ) : staff( basicsalary ) void input() coutname; couttitle; coutcoursetime; void output() double salary; switch(tit

22、le) case 1: salary = basicSalary+coursetime *50; break; case 2: salary=basicSalary+coursetime*30; break; case 3: salary=basicSalary+coursetime*20; cout姓名:namet本月工资:salaryendl; protected: int coursetime; int title;class manage : public staff public: manage( int basicsalary=2500 ) : staff( basicsalary

23、 ) void input() coutname; coutjobSalary; void output() double salary; salary = basicSalary+jobSalary; cout姓名:namet本月工资:salaryendl; protected: double jobSalary; class technician : public staff public: technician( int basicsalary=2000 ) : staff( basicsalary ) void input() coutname; coutworkdays; void output() double salary; salary = basicSalary+workdays*20; cout姓名:namet本月工资:salaryendl; protected: int workdays; int main() teacher t; t.input(); t.output(); manage m; m.input(); m.output(); technician h; h.input(); h.output();

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2