自考c++程序设计课后答案参考全面完整Word文档下载推荐.docx
《自考c++程序设计课后答案参考全面完整Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《自考c++程序设计课后答案参考全面完整Word文档下载推荐.docx(60页珍藏版)》请在冰豆网上搜索。
p=newint[100];
for(inti=0;
i<
100;
i++)
{
*(p+i)=i;
}
for(i=0;
cout<
*(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)<
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’的位置是:
//在查找4的位置
数字a的内容:
for(inti=0;
i<
8;
a[i]<
"
\n数组b中的内容:
for(i=0;
b[i]<
[color=#FF0000]第二章[/color]
一、单项选择
1.D;
2.D;
二、作图题
1.已知一个学生类具有性别和年龄两个属性,男学生张明的年龄为12岁,女学生李红的年龄为11岁。
给出这个学生类的类图和它们的对象图。
(类)Student(对象)张明(对象)李红
stringsex;
sex(男);
sex(女);
intage;
age(12);
age(11);
方法…方法…方法…
2.一个圆具有圆心坐标和半径两个属性,并且能够给出圆面积,请画出这个圆类的类图。
(类)Circularity(类)Point
Pointp;
floatx;
floatradii;
floaty;
floatgetX();
floatgetAcreage();
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=0,k=0;
20;
i++)//初始化c3
c3[i]='
\0'
i=0;
while(c1[i]!
='
)
c3[k]=c1[i];
i++;
k++;
while(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<
[color=#F70909]
第三章[/color]
一、填空题
1.函数原型声明;
2.inline
3.传值,传引用
4.函数func返回引用
5.int*fun(char,int);
二、单项选择题
1.A;
2.C;
3.D;
1.y=x*x-T;
错误,T是类型,不是变量,不能参加运算;
2.y没有类型。
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的值并输出结果。
iostream.h>
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的值"
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>
=97&
&
c<
=123)
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次幂。
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++)
{
cout<
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<
----的长度:
strlen(str)<
//倒序前
revers(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.利用函数模板设计一个求数组元素中和的函数,并检验之。
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)
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<
[color=#EE1111]第四章[/color]
一、填空题
1.数据成员、成员函数;
2.类、重载、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对象:
PointA;
四、完成程序题
1.
classbase
private:
//私有数据成员
inta,b;
public:
voidinit(intx,inty)//公有函数
a=x;
b=y;
voidprint()
cout<
2*"
-"
="
(2*a-b)<
basea;
a.init(68,55);
a.print();
2.
#include
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)//用两对坐标做初始化,构造函数,1和4为对角顶点
point1.setXY(x1,y1);
point4.setXY(x2,y2);
voidinit()//给另外两个点做初始化的函数
point2.setXY