当前位置:首页 > C++程序设计习题大荟萃
6. int fun6(int n)
{
if (n==0)return 1;
else return 2*fun6(n-1); }
7. template
int fun7(DT&x,DT&y) {
if(x>y) return 1;
else if(x==y) return 0; else return -1; }
8. template
bool fun8(T a[],int n,T key) {
for(int i=0;i if(a[i]==key) return true; return false; } 9. #include #include void fun10(int *&a,int n) { srand (time(0)); int i; a=new int[n]; for(i=0;i 10. void fun10(int **&a,int m,int n) { int I,j; a=new int *[m]; for(i=0;i cout<<”输入”< 三、编写下列程序 1. 编写一个函数,求出一维整形数组a[n]中所 有元素的平方之和。 int fun1(int a[],int n); 2. 编写一个函数,分别求出一维整型数组a[n] 中所有奇数元素的个数和所有偶数元素的个数。 void fun2(int a[],int n,int&c1,int&c2); 3. 编写一个函数,从一个二维整型数中查找具 有最大值的元素,由引用参数row和col带回该元素的行号和列号。 void fun3(int a[][N],int m,int&row,int&col);//N为常量 4. 编写一个函数,求出由指针a所指向的字符 串中包含的每种十进制数字出现的次数,把统计结果保存在由指针b所指向的整型数组中。 void fun4(char *a,int *b); 5. 编写一个递归函数过程,求出两个自然数m 和n的最大公约数。 int fun5(int m,int n); 6. 编写一个递归函数过程,求出两个自然数m 和n的最小公倍数。 int fun6(int m,int n,int b=2); 7. 编写一个程序,求出二元一次方程组 {a11x+a12y=a13;a21x+a22y=a23} 的解,其中方程组的系数用一个实数二维数组保存。要求编写出一个主函数和两个普通函数,一个普通函数用于从键盘上向数组输入数据,另一个普通函数用于救出以该数组为系数矩阵的对应方程组的解,并由引用参数x和y返回所求的两个根,还有当方程组有惟一解时返回真,否则返回假。程序中的主函数用来定义一个二维实型数组,依次调用这两个普通函数,并且输出所求得的解。 提示:方程的两个根x0和y0分别为: x0=(a13a22-a12a23)/(a11a22-a12a21) y0=(a11a23-a13a21)/(a11a22-a12a21) 当a11a22-a12a21!=0时有惟一解。 第七章 结构与联合 一、计算出下列每个结构类型的大小 1. struct AA { int *a; }; 2. struct BB { int a; 21 int b; }; 3. struct CC{ char *data; BB s; CC *link; }; 4. struct DD{ short list1[5]; AA list2[5]; int len; }; 5. struct EE { char h; union { int b; double c; char d[6]; }; CC *a[2]; }; 6. struct FF { struct { int ac,*bc; }st,*pt; float *fb; }; 二、请指出下面每个函数的功能 1. float Average(Person a[],int n) { int x=0; for(int i=0;i 2. void Cout(Person a[],int n,int &c1,int &c2) { c1=c2=0; for(int i=0;i 22 3. Student FindMix(Student *a,int n) { if(n<=0) { cout<<”a中没有记录,停止运行!”< exit(1); } int k=0; for(int i=1;i if(a[i].grade 4. IntNode *FindMax(IntNode *f) { if(f) return NULL; IntNode *p=f; f=f->next; while(f) { if(f->data>p->data) p=f; f=f->next; } return p; } 5. int operator==(Student x,char *key) { if(strcmp(x.num,key)==0) return 1; else return 0; } 6. Franction operator *(Franction&x,Franction&y) { Franction z; z.nume=x.nume*y.num; z.deno=x.deno*y.deno; FranSimp(z); return z; } 7. Franction operator*(int c,Franction&x) { Franction y; y.nume=c*x.nume; y.deno=x.deno; return y; } 8. int Count(MixNode *f,int &n) { n=0; int m=0; while (f) { m++; if(f->mark==1) n++; f=f->next; } return m; } 三、编写下列程序或函数 1. 编一函数,从类型为Person的,具有n个 人员记录的数组a 中查找并打印出年龄不小于整形变量x值的所有记录,要求所有输出记录的同一数据项具有相同的显示宽度。 2. 分别编写一个普通函数和减法操作符重载 函数,实现具有Franction类型的两个分数相减的操作运算结果保存在第一个操作数中并带回,同时函数返回第一个操作数的引用。 3. 编写一个函数,实现从任意类型的具有n个 元素的数组中删除下标为i(p<=i 注意:具体删除操作是把下标为i+1到n-1的元素值依次向前移动一个位置,并使元素个数变为n-1。 4. 编写一个函数,对于具有Workers类型和n 个数组a,若从下标为k的位置起向后查找属于教师类别的、职级为x值的元素,当查找成功时返回该元素的下标,否则返回-1。 第八章 类与对象 一、单选题 1. 当类中一个字符指针成员指向具有n个字节 存储空间时,它所能存储字符串的最大长度为______。 A. n B. n+1 C. n-1 D. n-2 23 2. 假定AB为一个类,则该类的拷贝构造函数 的声明语句为______。 A. AB&(AB x) B. AB(AB x) C. AB(AB&); D. AB(AB*x) 3. 对类对象成员的初始化是通过执行构造函 数中的______完成的。 A.初始化表 B.函数体 C.参数表 D.基类表 4. 假定AB为一个类,则执行”AB a,b(3),*p;” 语句时,自动调用该类构造函数的次数为______。 A.2 B.3 C.4 D.5 5. 假定AB为一个类,则执行”AB a(4),b[3],*p[2];”语句时,自动调用该类构造函数的次数为______。 A.3 B.4 C.6 D.9 6. 假定AB为一个类,px为指向该类动态对象 数组的指针,该数组长度为n,则执行”delete []px;”语句时,自动调用该类析构函数的次数为假定AB为一个类,则执行”AB a,b(3),*p;”语句时,自动调用该类构造函数的次数为______。 A.0 B.1 C.n D.n+1 7. 对于类中定义的成员,其隐含访问权限为 ______。 A. public B.protected C.private D.static 8. 对于结构中定义的成员,其隐含访问权限为 ______。 A.public B.protected C.private D.static 9. 为了使类中的成员不能被类外的函数通过 成员操作符访问,则不应把该成员的访问权限定义为______。 A.public B.protected C.private D.static 10. 一个类的友元函数或友元类能够通过成员操 作符访问该类的______。 A.私有成员 B.保护成员 C.公用成员 D.所有成员 11. 假定要对类AB定义加号操作符重载成员函 数,实现AB类对象的加法,并返回相加结果,则该成员函数的声明语句为: ______。 A. AB operator+(AB&a,AB&b); B. AB operator+(AB&a); C. operator+(AB a); D. AB&operator +(); 二、填空题 1. 在定义类对象的语句执行时,系统在建立每个对 public: A(int aa=0,int bb=0):a(aa),b(bb) { cout<<”Constructor!”< ______。 3. 对一个类中的数据成员的初始化可以通过构造 函数中的______实现,也可以通过构造函数中的______实现。 4. 设px是指向一个类动态对象的指针变量,则执 3.行”delete px;”语句时,将自动调用该类的______。 5. 当一个类对象离开它的作用域时,系统将自动调 用该类的______。 6. 假定一个类对象数组为A[N],当离开它的作用域 时,系统自动调用该类析构函数的次数为______。 7. 假定AB为一个类,则执行”AB a[10]”语句时, 系统自动调用该类构造函数的次数为______。 8. 假定用户没有给一个名为AB的类定义构造函数, 则系统为其隐含定义的构造函数为______。 9. 假定用户没有给一个名为AB的类定义析构函数, 则系统为其隐含定义的析构函数为______。 10. 若需要把一个函数”void F();”定义为一个类 AB的友元函数,则应在类AB的定义中加入一条语句: ______。 11. 若需要把一个类AB定义为一个类CD的友元类, 则应在类CD的定义中加入一条语句:______。 4.三、写出下列每个程序运行后的输出结果 1. #include classA { int a,b; public: A(){ a=b=0; } A(int aa,int bb) { a=aa;b=bb; cout< void main() 5.{ A x, y(2,3), z(4,5); } 2. #include class A { int a,b; 24 } }; void main() { A x, y(2,3), z(y); } #include class A{ int *a; public: A(int aa=0) { a=new int(aa); cout<<”Constructor!”<<*a< void main() { A x[2]; A *p=new A[5]; delete p; } #include class A{ int a; public: A(int aa=0):a(aa){ } ~ A(){ cout<<”Destructor!”< void main() { A x(5); A *p=new A(10); delete p; } #include class A{ int *a; public: A(int x)
共分享92篇相关文档