C++习题课.docx

上传人:b****3 文档编号:1518435 上传时间:2022-10-22 格式:DOCX 页数:16 大小:26.79KB
下载 相关 举报
C++习题课.docx_第1页
第1页 / 共16页
C++习题课.docx_第2页
第2页 / 共16页
C++习题课.docx_第3页
第3页 / 共16页
C++习题课.docx_第4页
第4页 / 共16页
C++习题课.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

C++习题课.docx

《C++习题课.docx》由会员分享,可在线阅读,更多相关《C++习题课.docx(16页珍藏版)》请在冰豆网上搜索。

C++习题课.docx

C++习题课

习题讲解5

3.4编程题

7.已知用梯形法求积分的公式为:

,其中h=(b-a)/n,n为积分区间的等分数,编程序求如下积分的值。

要求把求积分公式编写成一个函数,并使用函数指针作为形式参数。

调用该函数时,给定不同的被积函数作为实际参数求不同的积分。

①②③

【解答】

#include

#include

usingnamespacestd;

doublef1(doublex)

{return4/(1+x*x);

}

doublef2(doublex)

{returnsqrt(1+x*x);

}

doublef3(doublex)

{returnsin(x);

}

doubletrap(double(*fun)(doublex),doublea,doubleb,longn)

{doublet,h;inti;

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;

returnt;

}

intmain()

{doublet1,t2,t3;

t1=trap(f1,0,1,10000);

cout<<"t1="<

t2=trap(f2,1,2,10000);

cout<<"t2="<

t3=trap(sin,0,3.14159265/2,10000);

cout<<"t3="<

}

6.4编程题

1.定义一个Book(图书)类,在该类定义中包括以下数据成员和成员函数。

数据成员:

bookname(书名)、price(价格)和number(存书数量)。

成员函数:

display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。

在main函数中,要求创建某一种图书对象,并对该图书进行简单的显示、借阅和归还管理。

【解答】

#include

usingnamespacestd;

classBook

{

public:

voidsetBook(char*,double,int);

voidborrow();

voidrestore();

voiddisplay();

private:

charbookname[40];

doubleprice;

intnumber;

};

//在类外定义Book类的成员函数

voidBook:

:

setBook(char*name,doublepri,intnum)

{

strcpy(bookname,name);

price=pri;

number=num;

}

voidBook:

:

borrow()

{

if(number==0)

{

cout<<"已没存书,退出!

"<

abort();

}

number=number-1;

cout<<"借一次,现存书量为:

"<

}

voidBook:

:

restore()

{

number=number+1;

cout<<"还一次,现存书量为:

"<

}

voidBook:

:

display()

{

cout<<"存书情况:

"<

<<"bookname:

"<

<<"price:

"<

<<"number:

"<

}

intmain()

{

charflag,ch;

Bookcomputer;

computer.setBook("c++程序设计基础",32,1000);

computer.display();

ch='y';

while(ch=='y')

{

cout<<"请输入借阅或归还标志(b/r):

";

cin>>flag;

switch(flag)

{

case'b':

computer.borrow();break;

case'r':

computer.restore();

}

cout<<"是否继续?

(y/n)";

cin>>ch;

}

computer.display();

}

 

6.4编程题

2.定义一个Box(盒子)类,在该类定义中包括以下数据成员和成员函数。

数据成员:

length(长)、width(宽)和height(高)。

成员函数:

构造函数Box,设置盒子的长、宽和高3个初始数据;成员函数setBox对数据成员置值;成员函数volume计算盒子的体积。

在main函数中,要求创建Box对象,输入长、宽、高,输出盒子的体积。

【解答】

#include

usingnamespacestd;

classBOX

{

public:

BOX(doublel,doublew,doubleh)

{length=l;

width=w;

height=h;

}

voidvolume()

{cout<<"volume="<

}

private:

doublelength,width,height;

};

intmain()

{

BOXbox1(1,3,5);

box1.volume();

BOXbox2(2,4,6);

box2.volume();

}

 

6.4编程题

3.定义一个Student类,在该类定义中包括:

一个数据成员(分数score)及两个静态数据成员(总分total和学生人数count);成员函数scoretotalcount(doubles)用于设置分数、求总分和累计学生人数;静态成员函数sum()用于返回总分;静态成员函数average()用于求平均值。

在main函数中,输入某班同学的成绩,并调用上述函数求全班学生的总分和平均分。

 

【解答】

#include

usingnamespacestd;

classstudent

{

public:

voidscoretotalcount(doubles)

{score=s;

total=total+score;

count++;

}

staticdoublesum()

{returntotal;

}

staticdoubleaverage()

{returntotal/count;

}

private:

doublescore;

staticdoubletotal;

staticdoublecount;

};

doublestudent:

:

total=0;

doublestudent:

:

count=0;

intmain()

{

inti,n;doubles;

cout<<"请输入学生人数:

";

cin>>n;

studentstu;

for(i=1;i<=n;i++)

{

cout<<"请输入第"<

";

cin>>s;

stu.scoretotalcount(s);}

cout<<"总分:

"<

:

sum()<

cout<<"平均分:

"<

:

average()<

}

6.4编程题

4.定义一个表示点的结构类型Point和一个由直线方程y=ax+b确定的直线类Line。

结构类型Point有两个成员x和y,分别表示点的横坐标和纵坐标。

Line类有两个数据成员a和b,分别表示直线方程中的系数。

Line类有一个成员函数print用于显示直线方程。

友元函数setPoint(Line&l1,Line&l2)用于求两条直线的交点。

在main函数中,建立两个直线对象,分别调用print函数显示两条直线的方程,并调用函数setPoint求这两条直线的交点。

【解答】

#include

usingnamespacestd;

structpoint

{

doublex;

doubley;

};

classline

{

public:

line(doubleu,doublev)

{

a=u;b=v;

}

voidprint()

{

cout<<"y="<

}

friendpointsetpoint(line&l1,line&l2);

private:

doublea,b;

};

pointsetpoint(line&l1,line&l2)

{pointp;

p.x=(l2.b-l1.b)/(l1.a-l2.a);

p.y=(l1.a*l2.b-l2.a*l1.b)/(l1.a-l2.a);

returnp;

}

intmain()

{pointsetp;

linel1(2,3),l2(4,5);

cout<<"直线l1:

";

l1.print();

cout<<"直线l2:

";

l2.print();

setp=setpoint(l1,l2);

cout<<"直线l1和直线l2的交点:

("<

}

 

8.2阅读下列程序,写出运行结果

1.

#include

usingnamespacestd;

classBase

{

public:

voidget(inti,intj,intk,intl)

{a=i;b=j;x=k;y=l;

}

voidprint()

{cout<<"a="<

<<"x="<

}

inta,b;

protected:

intx,y;

};

classA:

publicBase

{

public:

voidget(inti,intj,intk,intl)

{

Baseobj3;

obj3.get(50,60,70,80);

obj3.print();

a=i;b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1