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
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 cout<<\输入年月日\cin>>y>>m>>d; date a(y,m,d); a.numberofdays(); a.print(); } 6、 7、 //Factorial of N #include 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 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 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: