习题参考答案(3)

2018-12-22 19:49

int find(char a[], char b) {int i,j; i=strlen(a); for(j=0;j<=i;j++) {if(a[j]==b) break; };

if(j>i) return 0; else return j+1;} 17、

#include const int N=5;

void sort(int a[],int b[N]){ }

void main(){

int x[N]={85,72,98,56,85}; } 练习5

p161

1、回答以下问题:

1. 类是具有共同属性和操作的对象的一种抽象,是一种用户自定义的数据类型。 对象是封装了描述其属性的数据及对这些数据所加的操作而构成的统一体。 2. 面向对象程序设计方法的基本特征有抽象性,封装性,继承性和多态性。

3. 用privite说明的成员他们只能被该类的成员函数直接访问,其成员函数也称为工具函数。而用public说明的为公有成员,可以被该类对象直接访问,这部分中的函数也称为操作接口。

4. 构造函数主要为对象分配存储空间和对对象数据成员的初始化,而析构函数主要用于执行各语句和释放

int b[N]={1,2,3,4,5}; sort(x,b); int i,j,k,temp; for(i=0;i

for(i=0;i

cout<

for(j=i;j

if(a[k]

对象所占用的存储空间。构造函数有以下特点: (1)不允许有任何返回值;

(2)函数名必须与本类的类名相同;

(3)其参数个数可以为0,也可以有多个,故而函数可以重载;

(4)构造函数可以带有一个数据成员初始化表,它必须写在形式参数表的右边圆括号之后,函数体的左花括号之前,并且有一个冒号开始。 析构函数特点为:

(1)函数名为本类的类名前面加上“~”符号; (2)不允许带有任何参数; (3)不允许有任何返回值。

具有用一个已定义的对象初始化一个被创建的同类对象作用的函数叫做拷贝函数。自动调用拷贝函数的条件是:

(1)在遇到用一个已定义的对象初始化一个被创建的同类对象时; (2)在遇到一个函数时,要把实参对象按值传递给相应的形参对象时; (3)在遇到把对象作为返回值时

5. A类中包含有B类对象作为私有数据成员时,B类对象就是A的子对象。初始化时,首先按照各子函数对象的定义顺序调用他们个子所属类的构造函数并对其进行初始化,然后再执行对本类基本类型数据成员初始化以及执行本类的构造函数体。

6. C++是通过this指针的当前值来感知当前对象的。*this就表示当前对象。

7. 友元函数可以访问其他定义类中的全体数据成员。使用友元函数破坏了类的封装性,引入他的目的是加强简化同类对象之间的操作和提高面向对象程序的执行速度。

8. 类模版是C++中支持参数多态性的工具。一个类模版允许用户为定义一种模式,使得类中的某些数据成员,某些成员函数的参数,某些成员函数内部所需要的局部变量以及某些成员函数的返回值能取任何形式。类模版说明本身并不产生代码,只是指定了一个类族。 2、单项选择题 AADCAA

3、写出以下程序的输出结果: (1)

constructing(1,2) constructing(5,6) 1,2 5,6

destructed(1,2) destructed(5,6) (2) 0,2,1 4、程序填空 (1) j

line==1 200 obj.Run() (2)

(或者line==0)

long myclass::sum=0 ob3 (或者ob1, ob2) 5、

#include class date{ private: }; void main() {int y,m,d;

cout<<\输入年月日\cin>>y>>m>>d; date a(y,m,d); a.numberofdays(); a.print(); } 6、 7、

//Factorial of N #include class fact { };

long n; fact(long x) {n=x;} void mul()

{for(long f,i=f=1;i<=n;i++)

f*=long (i); cout<<\public:

int year,month,day,k;

date(int y,int m,int d){year=y;month=m;day=d;} void numberofdays()

{int *p,*j,a[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; p=a[0];

if((year%4==0)||(year@0==0&&year0!=0))

p+=13; j=p+month; while(p

void print(){cout<<\是第\天\public:

void main() {long i;

cout<<\cin>>i; fact ob(i); ob.mul(); return; }

8、设计一个平面直线类line,采用友元函数判断两条直线是平行还是相交,并采用友元函数计算二直线相交时的交点坐标。再编写一个主函数进行测试。 #include class line{ }; int n=0;

void Is (line&l1,line &l2) {if (l1.A*l2.B==l1.B*l2.A) cout<<\两直线平行\

else {cout<<\两直线相交\}

void crosspoint(line &l1,line &l2) {if (n==0 ) cout<<\两直线平行\

else{ double x=(-l2.B*l1.C+l1.B*l2.C)/(l1.A*l2.B-l2.A*l1.B); double y=(-l2.A*l1.C+l1.A*l2.C)/(l2.A*l1.B-l1.A*l2.B); cout<<\相交点为x=\}

void main()

{line l1(1,2,3), l2(3,4,5); l1.print(); l2.print();

double A,B,C; static int n; void friend Is (line &l1,line &l2); void friend crosspoint (line &l1,line&l2); line(double a=1.0,double b=1.0,double c=1.0) {A=a;B=b;C=c;} void print()

{cout<<\直线\

if (B>=0.0) cout<<\if (C>=0.0) cout<<\} public:

Is(l1,l2); crosspoint(l1,l2); }

练习 6 (p184) 1、见教材相关内容 2、选择题

(1)C (2)A (3)A (4)B (5)D 3、写出结果(必要时上机验证) 4、填空题

(1) person、(n,s)、person、(n,s)

(2) table、circle、char[strlen(c)+1]、strcpy、getheight()、getarea()、getcolor()

练习7 (p210) 1、见教材相关内容 2、选择题

(1)D (2)C (3)B (4)B (5)C 3、写出结果(必要时上机验证) 4、填空题

(1)const point &p、friend 6、 成员函数: #include #include class string{ private: };

string string::operator+=(string str) {strcat(s,str.s); return s;} void main()

{string ob1(\cout<<\cout<<\ob1+=ob2;

cout<<\}

char s[30];

string(char *p=0){strcpy(s,p);} char *print(){return s;} string operator+=(string str); public:


习题参考答案(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:简析中国led灯产品的出口贸易问题及对策学位论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: