c++程序设计课后练习答案Word下载.docx
- 文档编号:22208877
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:69
- 大小:85.48KB
c++程序设计课后练习答案Word下载.docx
《c++程序设计课后练习答案Word下载.docx》由会员分享,可在线阅读,更多相关《c++程序设计课后练习答案Word下载.docx(69页珍藏版)》请在冰豆网上搜索。
for(inti=0;
i<
100;
i++)
*(p+i)=i;
for(i=0;
*(p+i)<
deletep;
3.编写完整的程序,它读入15个float值,用指针把它们存放在一个存储快里,然后输出这些值和以及最小值。
algorithm>
//用于数组排列的头文件
float*p;
p=newfloat[15];
输入15个float类型的值:
<
15;
i++)
cin>
>
*(p+i);
15;
,"
sort(p,p+15);
\n最小的是:
*(p)<
deletep;
4.声明如下数组:
inta[]={1,2,3,4,5,6,7,8};
先查找4的位置,讲数组a复制给数组b,然后将数组a的内容反转,再查找4的位置,最后分别输出数组a和b的内容。
iostream>
algorithm>
#include<
functional>
usingnamespacestd;
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'
//
在查找4的位置
数字a的内容:
for(inti=0;
i<
8;
a[i]<
"
\n数组b中的内容:
for(i=0;
b[i]<
、单项选择
1.D;
2.D;
三、编程题
1.使用多种方法编写将两个字符串连接在一起的程序。
string>
//使用string类定义字符串,完成字符串连接stringstr1("
C++"
),str2("
程序设计"
);
stringstr3;
str3=str1+str2;
//连接方式1cout<
str3<
//使用char数组定义字符串,完成连接
charc1[]={"
c++"
},c2[]={"
program"
};
charc3[20];
inti=0,k=0;
20;
i++)//初始化c3
c3[i]='
\0'
i=0;
while(c1[i]!
='
)
c3[k]=c1[i];
k++;
while(c2[i]!
c3[k]=c2[i];
i++;
c3<
2.已知一个string的对象str的内容为“Wearehere!
”,使用多种方法输出“h”。
functional>
stringstr1("
Wearehere!
str1[7]<
//通过数组
stringstr2=str1.substr(7,1);
//通过得到子字符串
str2<
char*p=find(str1.begin(),str1.end(),'
h'
//通过find函数if(p)
*p<
第三章
一、填空题
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没有类型,并且x的类型和template中的不一样。
iostream.h>
template<
classType>
Typemax(Typex,Typey)
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)
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);
image2=-image1;
两个虚根"
real1<
+"
image1<
j"
x2="
real2<
image2<
inta,b,c;
doubletemp;
输入a,b,c的值"
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>
=97&
&
c<
=122)return(c-32);
else
returnc;
inti;
charc[15]={'
'
v'
e'
t'
E'
T,'
%'
'
'
4'
Y'
i'
@'
9'
for(i=0;
i<
up(c[i])<
"
3.编写主程序条用带实数r和整数n两个参数的函数并输出r的n次幂#include<
doublepower(doublea,intb)
doubleresult=1.0;
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++)
c;
print_triangle('
a'
10);
5.编写一个ieqiu字符串长度的函数,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[]={"
1234567890"
str<
//revers(str);
//}
的长度:
strlen(str)<
倒序前
倒序后
6.用函数模板实现3个数值中按最小值到最大值排序的程序。
template
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.利用函数模板设计一个求数组元素中和的函数,并检验之
classT>
Tsum(Ta[],intn)
Ts=0;
for(i=0;
s=s+a[i];
returns;
voidmain()
inta[5]={1,2,3,4,5};
ints=sum(a,5);
s<
8.重载上题中的函数模板,使他能够进行两个数组的求和
Tsum(Ta[],intn)
returns;
template//重载上面的模板
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.类、析构函数不允许有参数和返回类型(可是显示地说明参数为void)、一
个类有1个析构函数;
3.fun:
:
fun(fun&
)、fun:
fun(constfun&
1.C°
2.C°
3.没又答案,应该是A:
~A(void)、或A:
~A()。
4.B。
5.C。
6.C。
7.D
1.returnm;
---错误,没又定义变量m;
2.A.init(24,56);
---错误,没有声明对象A,init函数参数不对应;
Setx函数是int型但是没有返回值
四、完成程序题
1.
classbase
private:
//私有数据成员
inta,b;
public:
voidinit(intx,inty)//公有函数{
a=x;
b=y;
voidprint()
2*"
-"
="
(2*a-b)<
basea;
a.init(68,55);
a.print();
2.
#includeusingnamespacestd;
classPoint
intm,n;
Point(int,int);
//整型变量,为参数的构造函数
Point(Point&
//复制构造函数的原型
print()
m="
m<
n="
n=t.n;
Pointa(10,89);
Pointb(a);
b.print();
五、程序分析题
1.没有结果,因为没有main函数如果加main函数voidmain()
baseb(10,20);
输出:
初始化...10,20
Destory...10,20
55
六、编程题
1.设计一个点类Point,再设计一个矩形类,矩形类使用Point类的两个坐标点作为矩形的对角顶点。
并可以输出4个坐标值和面积。
使用测试程序验证程序。
#include
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个点的对象public:
Rectangle();
//类Point的无参构造函数已经对每个对象做初始化啦,这里不用对每个点多初始化了
Rectangle(Pointone,Pointtwo)//用点对象做初始化的,构造函数,1和4为对角顶点
point1=one;
point4=two;
init();
Rectangle(intx1,inty1,intx2,inty2)//用两对坐
标做初始化,构造函数,1和4为对角顶点
point1.setXY(x1,y1);
point4.setXY(x2,y2);
voidinit()//给另外两个点做初始化的函数
point2.setXY(point4.getX(),point1.getY());
point3.setXY(point1.getX(),
point4.getY());
point4.getY()<
)"
intgetArea()//计算面积的函数
intheight,width,area;
height=point1.getY()-point3.getY();
width=point1.getX()-point2.getX();
area=height*width;
if(area>
returnarea;
return-area;
Pointp1(-15,56),p2(89,-10);
//定义两个点
Rectangler1(p1,p2);
//用两个点做参数,声明一个矩形对象r1
Rectangler2(1,5,5,1);
//用两队左边,声明一个矩形对象r2
矩形r1的4个定点坐标:
r1.printPoint();
矩形r1的面积:
r1.getArea()<
\n矩形r2的4个定点坐标:
r2.printPoint();
矩形r2的面积:
r2.getArea()<
2.使用内联函数设计一个类,用来表示直角坐标系中的任意一条直线并输出它的属性。
classLine
intx1,y1,x2,y2;
Line();
Line(int=0,int=0,int=0,int=0);
voidprintPoint();
doublegetLength();
inlineLine:
Line(inta,intb,intc,intd)
x1=a;
y1=b;
x2=c;
y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 课后 练习 答案