C++程序设计习题参考答案刘振安Word文档格式.docx

上传人:b****2 文档编号:4741429 上传时间:2023-05-04 格式:DOCX 页数:73 大小:33.16KB
下载 相关 举报
C++程序设计习题参考答案刘振安Word文档格式.docx_第1页
第1页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第2页
第2页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第3页
第3页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第4页
第4页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第5页
第5页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第6页
第6页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第7页
第7页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第8页
第8页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第9页
第9页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第10页
第10页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第11页
第11页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第12页
第12页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第13页
第13页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第14页
第14页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第15页
第15页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第16页
第16页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第17页
第17页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第18页
第18页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第19页
第19页 / 共73页
C++程序设计习题参考答案刘振安Word文档格式.docx_第20页
第20页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计习题参考答案刘振安Word文档格式.docx

《C++程序设计习题参考答案刘振安Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计习题参考答案刘振安Word文档格式.docx(73页珍藏版)》请在冰点文库上搜索。

C++程序设计习题参考答案刘振安Word文档格式.docx

}

for(i=0;

cout<

*(p+i)<

"

;

delete[]p;

3.编写完整的程序,它读入15个float值,用指针把它们存放在一个存储快里,然后输出这些值和以及最小值。

algorithm>

//用于数组排列的头文件

float*p;

p=newfloat[15];

输入15个float类型的值:

<

15;

i++)

//cin>

>

*(p+i);

}

sort(p,p+15);

intsum=0;

15;

sum+=*(p+i);

endl;

和是:

sum<

最小的是:

*(p)<

4.声明如下数组:

inta[]={1,2,3,4,5,6,7,8};

先查找4的位置,讲数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b的内容。

iostream>

algorithm>

functional>

inta[]={1,2,3,4,5,6,7,8},b[8];

数组a中'

4'

的位置是:

find(a,a+8,4)<

//查找4的位置

copy(a,a+8,b);

//将数组a复制给数组b

reverse_copy(b,b+8,a);

//把数组b,逆向复制给a,完成a的逆转

数组a反转后,'

//在查找4的位置

数组a的内容:

copy(a,a+8,ostream_iterator<

int>

(cout,"

));

\n数组b中的内容:

copy(b,b+8,ostream_iterator<

第二章参考答案

1.D

2.D

二、作图题

1.已知一个学生类具有性别和年龄两个属性,男学生张明的年龄为12岁,女学生李红的年龄为11岁。

给出这个学生类的类图和它们的对象图。

类图

Student

stringsex;

intage;

方法…

对象图

张明

sex(男);

age(12);

李红

sex(女);

age(11);

2.一个圆具有圆心坐标和半径两个属性,并且能够给出圆面积,请画出这个圆类的类图。

Circularity

Pointp;

floatradii;

floatgetAcreage();

Point

floatx;

floaty;

floatgetX();

floatgetY();

3.画出一个班级类的类图,为它设计必要的属性以表示这个类的特征。

PubClass

stringno;

//编号

intnum;

//人数

4.画出一种电话卡的类图,为它设计必要的属性。

Card

longno;

floatbalance;

//余额

5.为上题的电话卡设计必要的成员函数,以便提供基本服务。

floatgetBalance();

//显示余额

三、编程题

1.使用多种方法编写将两个字符串连接在一起的程序。

string>

//使用string类定义字符串,完成字符串连接

stringstr1("

C++"

),str2("

程序设计"

);

stringstr3;

str3=str1+str2;

//连接方式1

str3<

//使用char数组定义字符串,完成连接

charc1[]={"

c++"

},c2[]={"

program"

};

charc3[20]={"

inti,k;

for(i=0,k=0;

c1[i]!

='

\0'

i++,k++)

c3[k]=c1[i];

for(i=0;

c2[i]!

c3[k]=c2[i];

c3<

2.已知一个string的对象str的内容为“Wearehere!

”,使用多种方法输出“h”。

functional>

Wearehere!

str1[7]<

//通过数组

stringstr2=str1.substr(7,1);

//通过得到子字符串

str2<

char*p=find(str1.begin(),str1.end(),'

h'

//通过find函数

if(p)

*p<

char*p1=find(&

str1[0],&

str1[str1.length()],'

if(p1)

*p1<

第三章

1.函数原型声明;

2.inline

3.传值,传引用

4.函数func返回引用

5.int*fun(char,int&

1.A

2.C

3.C

1.y=x*x-T;

错误,T是类型,不是变量,不能参加运算;

2.y没有类型。

template<

classT>

Tmax(Tx,Ty)

return(x>

y)?

(x):

(y);

3.函数change的参数定义成了常量,只能使用参数,而无权修改他。

voidchange(string&

s)

s=s+"

pig!

}

1.编写一个求方程ax2+bx+c=0的根的程序,用3个函数分别求当b2-4ac大于零、等于零、和小于零时的方程的根。

要求从主函数输入a,b,c的值并输出结果。

math.h>

voidequation_1(inta,intb,intc)

doublex1,x2,temp;

temp=b*b-4*a*c;

x1=(-b+sqrt(temp))/(2*a*1.0);

x2=(-b-sqrt(temp))/(2*a*1.0);

两个不相等的实根"

x1="

x1<

x2="

x2<

voidequation_2(inta,intb,intc)

x1=(-b)/(2*a*1.0);

x2=x1;

两个相等的实根"

voidequation_3(inta,intb,intc)

doubletemp,real1,real2,image1,image2;

temp=-(b*b-4*a*c);

real1=-b/(2*a*1.0);

real2=real1;

image1=sqrt(temp)/(2*a*1.0);

image2=sqrt(temp)/(2*a*1.0);

两个虚根"

real1<

+"

image1<

i"

x2="

real2<

-"

image2<

inta,b,c;

doubletemp;

输入a,b,c的值"

cin>

a>

b>

c;

方程为:

a<

x*x+"

b<

x+"

c<

=0"

if(temp>

0)

equation_1(a,b,c);

if(temp==0)

equation_2(a,b,c);

if(temp<

equation_3(a,b,c);

2.定义函数up(ch),如字符变量ch是小写字母就转换成大写字母并通过up返回,否则字符ch不改变。

要求在短小而完全的程序中显示这个程序是怎样被调用的。

charup(charc)

if(c>

='

a'

&

&

c<

z'

return(c-32);

else

returnc;

inti;

charc[15]={'

A'

'

v'

e'

t'

E'

T'

%'

'

Y'

i'

@'

9'

^'

for(i=0;

i<

up(c[i])<

3.编写主程序调用带实数r和整数n两个参数的函数并输出r的n次幂。

doublepower(doublea,intb)

doubleresult=1.0;

i<

b;

result=result*a;

returnresult;

doubler;

intn;

r="

r;

n="

n;

r<

的"

n<

次幂是:

power(r,n)<

4.编写有字符型参数C和整形参数N的函数,让他们显示出由字符C组成的三角形。

其方式为第1行有1个字符C,第2行有2个字符C,等等。

voidprint_triangle(charc,intn)

inti,j;

i<

n;

for(j=0;

j<

=i;

j++)

{

cout<

c;

}

print_triangle('

10);

5.编写一个求字符串长度的函数strlen(),再用strlen()函数编写一个函数revers(s)的倒序递归程序,使字符串s逆序。

intstrlen(char*str)

intlen=0;

while(str[len]!

len++;

returnlen;

voidrevers(char*b)

charc;

intj,len;

len=strlen(b);

j=len/2-1;

while(j>

=0)

{

c=*(b+j);

*(b+j)=*(b+len-j-1);

*(b+len-j-1)=c;

j--;

b[len]='

charstr[]={"

abcdefghijklmnopqrstuvwxyz"

str<

----的长度:

strlen(str)<

//倒序前

revers(str);

//

//倒序后

6.用函数模板实现3个数值中按最小值到最大值排序的程序。

voidsort(Ta,Tb,Tc)

Tarray[3],temp;

inti,j;

array[0]=a;

array[1]=b;

array[2]=c;

3;

j<

2;

j++)

if(array[j]>

array[j+1])

{

temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

array[0]<

array[1]<

array[2]<

sort(5,1,9);

7.利用函数模板设计一个求数组元素中和的函数,并检验之。

Tsum(Ta[],intn)

Ts=0;

s=s+a[i];

returns;

voidmain()

inta[5]={1,2,3,4,5};

ints=sum(a,5);

s<

8.重载上题中的函数模板,使他能够进行两个数组的求和。

Tsum(Ta[],intn)

//重载上面的模板

Tsum(Ta[],intn,Tb[],intm)

returnsum(a,n)+sum(b,m);

intb[10]={1,2,3,4,5,6,7,8,9,10};

ints1=sum(a,5);

ints2=sum(b,10);

ints3=sum(a,5,b,10);

s1<

s2<

s3<

第四章

1.数据成员、成员函数;

2.类、重载、1;

3.fun:

fun(fun&

)、fun:

fun(constfun&

1.C

3.没答案,应该是A:

:

~A(void)或A:

~A()

4.B

5.C

6.C

7.D

1.

returnm;

错误1,没有定义变量m;

deletep错误2,deletep;

2.

A.init(24,56);

错误1,应该先定义A对象:

PointA;

错误2,一个参数:

A.init(24.56);

intSetx(inta){x=a;

}错误3,应有返回值:

returnx;

四、完成程序题

classbase

private:

//私有数据成员

inta,b;

public:

voidinit(intx,inty)//公有函数

a=x;

b=y;

voidprint()

2*"

="

(2*a-b)<

basea;

a.init(68,55);

a.print();

iostream>

classPoint

intm,n;

Point(int,int);

//整型变量,为参数的构造函数

Point(Point&

//复制构造函数的原型

print()

m="

m<

n="

Point:

Point(inta,intb)

m=a;

n=b;

Point(Point&

t)//复制构造函数的定义

m=t.m;

n=t.n;

Pointa(10,89);

Pointb(a);

b.print();

五、程序分析题

1.没有结果,因为没有main函数

如果加main函数

baseb(10,20);

输出:

初始化...10,20

Destory...10,20

55

六、编程题

1.设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点。

并可以输出4个坐标值和面积。

使用测试程序验证程序。

classPoint//点类

private:

intx,y;

//私有成员变量,坐标

Point()//无参数的构造方法,对xy初始化

x=0;

y=0;

Point(inta,intb)//又参数的构造方法,对xy赋值

x=a;

y=b;

voidsetXY(inta,intb)//设置坐标的函数

intgetX()//得到x的方法

returnx;

intgetY()//得到有的函数

returny;

classRectangle//矩形类

Pointpoint1,point2,point3,point4;

//私有成员变量,4个点的对象

Rectangle();

//类Point的无参构造函数已经对每个对象做初始化啦,这里不用对每个点多初始化了

Rectangle(Pointone,Pointtwo)//用点对象做初始化的,构造函数,1和4为对角顶点

point1=one;

point4=two;

init();

Rectangle(intx1,inty1,intx2,inty2)//用两对坐标做

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

当前位置:首页 > 解决方案 > 学习计划

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

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