C++课堂练习Word格式文档下载.docx

上传人:b****4 文档编号:7169007 上传时间:2023-05-08 格式:DOCX 页数:41 大小:23.86KB
下载 相关 举报
C++课堂练习Word格式文档下载.docx_第1页
第1页 / 共41页
C++课堂练习Word格式文档下载.docx_第2页
第2页 / 共41页
C++课堂练习Word格式文档下载.docx_第3页
第3页 / 共41页
C++课堂练习Word格式文档下载.docx_第4页
第4页 / 共41页
C++课堂练习Word格式文档下载.docx_第5页
第5页 / 共41页
C++课堂练习Word格式文档下载.docx_第6页
第6页 / 共41页
C++课堂练习Word格式文档下载.docx_第7页
第7页 / 共41页
C++课堂练习Word格式文档下载.docx_第8页
第8页 / 共41页
C++课堂练习Word格式文档下载.docx_第9页
第9页 / 共41页
C++课堂练习Word格式文档下载.docx_第10页
第10页 / 共41页
C++课堂练习Word格式文档下载.docx_第11页
第11页 / 共41页
C++课堂练习Word格式文档下载.docx_第12页
第12页 / 共41页
C++课堂练习Word格式文档下载.docx_第13页
第13页 / 共41页
C++课堂练习Word格式文档下载.docx_第14页
第14页 / 共41页
C++课堂练习Word格式文档下载.docx_第15页
第15页 / 共41页
C++课堂练习Word格式文档下载.docx_第16页
第16页 / 共41页
C++课堂练习Word格式文档下载.docx_第17页
第17页 / 共41页
C++课堂练习Word格式文档下载.docx_第18页
第18页 / 共41页
C++课堂练习Word格式文档下载.docx_第19页
第19页 / 共41页
C++课堂练习Word格式文档下载.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++课堂练习Word格式文档下载.docx

《C++课堂练习Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++课堂练习Word格式文档下载.docx(41页珍藏版)》请在冰点文库上搜索。

C++课堂练习Word格式文档下载.docx

voidmain()

{

intcost;

doubleprice,d;

cost;

if(cost>

5000)

d=0.8;

switch(cost/1000)

case0:

d=1.0;

break;

case1:

d=0.95;

case2:

d=0.9;

case3:

case4:

d=0.85;

price=cost*d;

price<

}

4从键盘输入一个三角形的3条边长,编写一个求三角形面积的函数(通过海仑公式求面积),并将结果显示。

cmath>

doublearea(inta,intb,intc);

inta,b,c;

a>

b>

c;

Area:

area(a,b,c)<

doublearea(inta,intb,intc)

doubles,area;

s=(a+b+c)/2.0;

area=sqrt(s*(s-a)*(s-b)*(s-c));

returnarea;

5输入的整数按逆序输出,要求分别用递归算法和非递归算法实现。

如:

输入:

12345,输出:

54321

voidprint(inta);

voidprint1(inta);

intn;

n;

print(n);

print1(n);

voidprint(inta)//非递归

while(a>

0)

a%10<

"

;

a=a/10;

voidprint1(inta)//递归

if(a>

print1(a/10);

}

6请将P77的例3-12改写成指针传递的函数调用方式

stdafx.h>

voidSwap(int*a,int*b);

intx(5),y(10);

x="

x<

y="

y<

Swap(&

x,&

y);

voidSwap(int*a,int*b)

intt;

t=*a;

*a=*b;

*b=t;

7编写2个同名函数,分别求三角形面积和矩形面积(通过各自的边长),使用重载的方式分别调用并显示结果。

doublearea(inta,intb,intc,intd);

inta,b,c,d;

c>

d;

TriangleArea:

SquareArea:

area(a,b,c,d)<

doublearea(inta,intb,intc,intd)

doublearea;

if(a==b)

if(a==c)

area=a*d;

else

area=a*c;

else

area=a*b;

returnarea;

8编写程序,实现两个字符串的交换。

(请分别用三种参数传递方式实现)

例如:

char*ap="

hello"

char*bp="

howareyou?

交换的结果使得ap和bp指向的内容分别为:

ap:

bp:

voidswap(char*x,char*y)

voidswap(char**x,char**y)

voidswap(char*&

x,char*&

y)

string.h>

{

chartemp[20];

strcpy(temp,x);

strcpy(x,y);

strcpy(y,temp);

}

voidmain()

charap[20]="

charbp[20]="

ap<

bp<

swap(ap,bp);

============================

voidswp(char**x,char**y)

char*temp;

temp=*x;

*x=*y;

*y=temp;

char*ap="

char*bp="

swp(&

ap,&

bp);

===========================

y)//引用作为参数

temp=x;

x=y;

y=temp;

swapap,bp"

9下面是一个类的测试程序,设计出能使用如下测试程序的类。

Testa;

a.init(68,50);

a.print();

其执行结果为:

测试结果:

68-50=18

classTest

intx,y;

public:

voidinit(int,int);

voidprint();

};

voidTest:

:

init(inti,intj)

{x=i;

y=j;

print()

{cout<

-"

="

x-y<

10写出以下程序的执行结果

classSample

Sample(){x=y=0;

Sample(inta,intb){x=a;

y=b;

~Sample()

{

if(x==y)

cout<

x=y"

else

x!

=y"

voiddisp()

y="

Samples1(2,3);

s1.disp();

11设计一个立方体类Box,它能计算并输出立方体的体积和表面积。

分析:

Box类包含三个私有数据成员a(立方体边长)、volume(体积)和area(表面积),另有两个构造函数以及seta()(设置立方体边长)、getvolume()(计算体积)、getarea()(计算表面积)和disp()(输出结果)。

classBox

floata;

floatvolume;

floatarea;

Box(){}

Box(floatr){a=r;

voidseta(floatr){a=r;

voidgetvolume(){volume=a*a*a;

voidgetarea(){area=6*a*a;

{cout<

体积:

volume<

表面积:

area<

}

Boxobj1(4.5),obj2;

obj2.seta(6.4);

obj1.getvolume();

obj1.getarea();

obj1=>

obj1.disp();

obj2.getvolume();

obj2.getarea();

obj2=>

obj2.disp();

12写出以下程序的执行结果

Sample(inti,intj){x=i;

voidcopy(Sample&

s);

voidsetxy(inti,intj){x=i;

voidprint(){cout<

voidSample:

copy(Sample&

s)

x=s.x;

y=s.y;

voidfunc(Samples1,Sample&

s2)

s1.setxy(10,20);

s2.setxy(30,40);

Samplep(1,2),q;

q.copy(p);

func(p,q);

p.print();

q.print();

13编写一个程序,设计一个点类Point,求两个点之间的距离。

可以设计一个普通函数distance(Point&

p1,Point&

p2),用于计算p1和p2点之间的距离。

math.h>

classPoint

Point(inti,intj){x=i;

intgetx(){returnx;

intgety(){returny;

("

'

)"

floatdistance(Point&

p2)//对象引用作为参数

floatd;

d=sqrt((p1.getx()-p2.getx())*(p1.getx()-p2.getx())+(p1.gety()-p2.gety())*(p1.gety()-p2.gety()));

returnd;

Pointp1(2,2),p2(5,5);

p1.disp();

与"

p2.disp();

之间距离="

distance(p1,p2)<

14创建一个职工类employee,该类能表示姓名、街道地址、市、省和邮政编码。

该类中有构造函数、changstreet()、display()函数构造函数初始化每个成员,changstreet()函数能改变职工的地址信息,display()函数把完整的职工信息打印出来。

其中的数据成员是保护的,函数是公共的。

classemployee

protected:

charname[10];

//姓名

charstreet[20];

//街道地址

charcity[10];

//市

charprov[10];

//省

charpost[7];

//邮政编码

intno;

//记录序号

employee(char[],char[],char[],char[],char[],int);

voidchangestreet(charn[]);

voiddisplay();

employee:

employee(charn[],chars[],charc[],charp1[],charp2[],intnum)

strcpy(name,n);

strcpy(street,s);

strcpy(city,c);

strcpy(prov,p1);

strcpy(post,p2);

no=num;

voidemployee:

changestreet(charn[])

strcpy(street,n);

display()

输出记录"

no<

姓名:

name<

街道地址:

street<

市:

city<

省:

prov<

邮政编码"

post<

employeeobj1("

王华"

"

中华路15号"

武汉市"

湖北省"

430070"

1);

employeeobj2("

杨丽"

天津路30号"

南京市"

江苏市"

210020"

2);

obj1.display();

obj2.display();

15分析以下程序的执行结果

staticintsum;

Sample(intx){n=x;

voidadd(){sum+=n;

n="

n<

sum="

sum<

本题说明静态数据成员的使用方法。

在类中定义了一个静态数据成员sum,在main()之前给它赋初值0,然后在main()中定义了三个对象,并执行各自的add()和disp()方法。

所以输出为:

n=2,sum=2

n=3,sum=5

n=5,sum=10

注意:

静态数据成员脱离具体的对象独立存在,其存储单元不是任何对象存储空间的一部分,但逻辑上所有对象都共享这一存储单元,对静态数据成员的任何操作都会访问这一存储单元,从而影响这一存储单元的所有对象。

intSample:

sum=0;

//静态数据成员赋初值

Samplea

(2),b(3),c(5);

a.add();

a.disp();

b.add();

b.disp();

c.add();

c.disp();

16分析以下程序执行的结果

intA;

staticintB;

Sample(inta){A=a,B+=a;

staticvoidfunc(Samples);

func(Samples)

A="

s.A<

B="

B<

B=0;

Samples1

(2),s2(5);

Sample:

func(s1);

func(s2);

本题说明了静态成员函数的使用方法。

其中的数据成员B是静态数据成员,求B之值是在构造函数中进行的。

A=2,B=7

A=5,B=7

静态成员函数与静态数据成员一样,也不是对象成员。

静态成员函数的调用不同于普通的成员函数。

在静态成员函数的实现中,引用类的非静态数据成员是通过对象进行的,如本题中s.A,引用类的静态数据成员是直接进行的,如本题中的B。

17分析以下程序的输出结果

intx;

Sample(inta)

x=a;

constructingobject:

voidfunc(intn)

{staticSampleobj(n);

func

(1);

func(10);

本题说明静态对象构造函数的调用情况,由于在func()函数中定义的对象obj是静态对象,故只被构造一次,所以输出为:

counstructingobject:

x=1

静态对象和静态变量一样,只被构造一次。

块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。

18编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。

设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。

classStud

intdeg;

staticintnum;

voidsetdata(intn,charna[],intd)

no=n;

deg=d;

strcpy(name,na);

sum+=d;

num++;

staticdoubleavg()

{returnsum/num;

deg<

intStud:

num=0;

Studs1;

Studs2;

Studs3;

intn,d;

charna[10];

输入学号姓名成绩:

n>

na>

s1.setdata(n,na,d);

cout<

s2.setdata(n,na,d);

s3.setdata(n,na,d);

输出数据:

学号姓名成绩"

s2.disp();

s3.disp();

平均分="

Stud:

avg();

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

当前位置:首页 > 人文社科 > 法律资料

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

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