1、(一)读程序题1类中包括其他类的对象成员,构造函数中要列出成员对象名带实参,生成该类对象时,要先调用成员对象的构造函数。如果是成员对象的缺省构造函数可以不列,但生成该类对象时,仍要先调用成员对象的缺省构造函数。1. 如下程序运行时的输出结果是 1135 。#includeclass ONEint c;public:ONE():c(0)coutclass Apublic: int x;A()x=10;A(int i) x=i;void Show()cout class A public : A( ) coutclass Apublic:A()coutclass Apublic: A() cout
2、class Apublic: A() cout#includeclass Bchar str20;public:B (char *s=“default“) strcpy(str,s); coutclass Apublic:virtual void f1( ) coutf1( ); p-f2( ); p-f3( );9. 如下程序运行时的输出结果是 。#includeclass Apublic:virtual void f( )coutf(); p-g();void main( )B b; show(b);print( 10. 如下程序运行时的输出结果是 。#include #include c
3、lass Ppublic:P(char *s)name=new charstrlen(s)+1;strcpy(name,s);virtual void print()coutprint();p= p-print();p= p-print();stud.print(a);11. 如下程序运行时的输出结果是 。#include class Aint x, n;int mul;public:A(int a, int b)x=a; n=b; mul=10;virtual int power(void)mul=1;for(int i=1;ipower()class Animal public: virt
4、ual char * getType( ) return “Animal”; virtual char * getVoice( ) return “Voice”; ;class Dog: public Animal public:char * getType( ) return “Dog”; char *getVoice( ) return “Woof” ;void type( Animal public:Sample(long a) x=a; private:long x;long fun(Sample s)if (s.xclass Arrayfloat *pa;int n;public:A
5、rray(float *p,int x)n=x;pa=new floatn;for(int i=0;in;i+)pai=pi; /Avoid operator+=(Array in;i+)pai+=t.pai; /Bfriend void operator-=(Array it1.n;i+)t1.pai-=t2.pai; /Cvoid print()for(int i=0;in;i+)coutpait; /Dif(i+1)%5=0)coutn;Array()delete pa;void main()float a10=1,2,3,4,5,6,7,8,9,10,b10=0,1,2,3,4,5,6
6、,7,8,9;Array a1(a,10),a2(b,10);a1+=a2;a1.print();a1-=a2;a1.print();一、函数编程1.求素数问题:定义函数判断一个整数是否为素数,求 300 以内的素数,每行 3 个数形式输出。2.最大公约数和最小公倍数问题:求两分数之和并输出结果,要求:将求最小公倍数和最大公约数设计成独立的函数。 (提醒:分子、分母可分别用两个整型变量表示。之和的分母就是两分数分母的最小公倍数;输出示例: cout3”/”7; 就完成了分数 3/7 的输出显示。 )3.一维数组排序与元素移动综合题:(1)定义整型数组 a10,从键盘输入 10 个数为数组赋值,
7、并分别定义两个独立函数,void print(int b)实现将一维数组元素输出 ,void sort(int b,int n)实现将一维数组的元素按从小到大排序(用两种方法实现) 。最后在主函数中分别调用两个函数。4.二维数组与元素移动:(1 )定义一个二维数组 int b23,从键盘输入为二维数组赋值,将二维数组中按列循环前移或后移一位,并以矩阵形式输出二维数组元素。(2 )定义一个二维数组,int a44,求其外围元素之和与对角线之和,并以矩阵形式输出二维数组元素。 (求和用两种方法实现)5.字符串处理:设计一个通用函数实现在字符串 s1 中从第 m 个字符开始插入字符串 s2,在主程序
8、中对该函数进行测试。初始状态:s1: abcdefgs2: 1234输入插入字符串的位置:3目标状态:s1: ab1234cdefg s2: 12346.拼数与合数问题:(1)在主函数中定义一个一维数组 a4用来存放 4 个整型数 3,12,0,1,并依次输出一维数组中的元素。(2)依次取出数组中的元素,利用合数算法将这些元素合成一个数,要求合数的过程写成独立函数的形式,编写 int fun(int b,int n)函数,其中 b 为一维数组,n 为 b 数组中包含的元素个数。该函数用来实现合数过程,并在主函数中调用该函数,并在主函数中输出合成之后的数。7.数字字符与整数转换算法:将字符串#a
9、b78c15fk23d* 中整型数据提取出来,合成一个整型数 781523 并输出来。再将 781523 整数的各个数位数字拆开存放到一维数组 int b10中,并将一维数组中的元素转换为数字字符存放到字符数组 s100中,并输出该数字字符串“325187“.8.字符数组:(1)定义一个字符数组 char s100=“abc123“;定义两个函数分别实现将字符串逆序排序和按照字符的 ASCII 码从小到大排序,输出并操作后的字符串。(2)定义两个字符数组:char s1100=“apple“,s2100=“tree“;将两个字符数组拼接成一个字符串(不用拼接函数),并输出拼接前和拼接后的两个字
10、符串。9.请从键盘输入一个正整数,求这个数是几位数,并求出该正整数的各个位上的数字之和。如输入 1234,该正整数是 4 位数,各个数位上的数字之和为 10.10、循环结构:请从键盘输入一个正整数,求这个数是几位数,并求出该正整数的各个位上的数字之和。如输入 1234,该正整数是 4 位数,各个数位上的数字之和为 10.11、从键盘上输入一个整数 n 的值,按下式求出 y 的值,并输出 n 和 y 的值。 y=1!+2!+3!+ +n!12、求 1-1/2+1/3-1/4+1/99-1/100 的和。13、求 1+1/1!+1/2!+1/10!的和14、从键盘输入一个整数 n,将该整数的每一位
11、上的数字拆开,存放到一维数组 int a10中,该过程用独立函数形式实现。并将一维数组中的元素取出合成一个数,并输出合成的数和一维数组元素。如 n:1234,存放到一维数组中的顺序为 4 3 2 1,合成一个数为4321。二、类的编程:用类解决实际问题的方法分三个步骤,如下:1、定义类的框架2、公有成员函数的实现3、在主函数中测试类(用类定义对象,并用对象调用成员函数)(一)数据成员为一维数组时问题描述如下:(1 )定义一个类 Array, 它的数据成员和成员函数如下:私有数据: int b10,int m;公有成员函数: Array(int t);/功能为一维数组 b 初始化Void fun
12、();/ 求一维数组 b 的最大值为 mvoid sort();/功能为实现对一维数组从大到小排序void move();/ 功能为将一维数组元素循环后移一位void print();/功能为输出一维数组元素(2 )用类定义对象 arr,并用对象 arr 调用成员函数,实现对一维数组元素排序和数组元素循环后移一位,并输出每次操作的结果。(二)数据成员为二维数组时1、问题描述如下:(1 )定义一个类 Array, 它的数据成员和成员函数如下:私有数据: int a45; int s;公有成员函数:Array(int t5);/功能为二维数组 b 初始化void sum();/ 功能为求二维数组
13、b 外围元素之和为 svoid fun();/对二维数组 b 按列前移void print();/功能为以矩阵形式输出二维数组元素(2 )用类定义对象 array,并用对象 array 调用成员函数求出二维数组外围元素之和,按列前移,再求二维数组外围元素之和,输出二维数组元素。2、问题描述如下:(1 )定义一个类 Array, 它的数据成员和成员函数如下:私有数据: int b44; int s;公有成员函数:Array(int t4);/功能为二维数组 b 初始化void sum();/ 功能为求二维数组 b 对角线元素之和为 svoid fun();/将二维数组 b 最小元素所在的列与第
14、0 列对调void print();/功能为以矩阵形式输出二维数组元素(2 )用类定义对象 array,并用对象 array 调用成员函数求出二维数组对角线元素之和,对调最小元素所在的列与第 0 列,输出二维数组元素。(三)数据成员为字符数组时问题描述如下:定义一个字符串类 String,将字符串 b 拼接到字符串 a 中, (不能用拼接函数) 。具体要求如下:(1 )私有数据成员char a100,b100;(2)公有成员函数String(char c,char d):构造函数,用参数初始化数据成员void fun():功能函数,实现将 b 拼接到 a 的后面void insert(int
15、m);实现将字符数组 b 中的字符串插入到字符数组 a 中的第 m 个字符的位置。void show():功能函数, 输出数据成员(3 )用数据“123456789“,“abc“在主函数中对类测试。(四)数据成员为指针变量时1、定义一个字符串类 String,为指针变量 p 动态申请空间,并初始化。对 p 所指向的字符串进行逆序操作。具体要求如下:(1 )私有数据成员char *p;(2)公有成员函数String(char *t):构造函数,用参数初始化数据成员void fun():功能函数,实现对字符串进行逆序。void show():功能函数, 输出数据成员String();析构函数,撤销
16、对象。(3 )用数据“123456789“在主函数中对类测试。2、定义一个类名为 Array,为指针变量 p 动态申请空间,并初始化。对 p 所指向的一维数组逆序排序。具体要求如下:(1 )私有数据成员int *p;(2)公有成员函数Array(int *t):构造函数,用参数初始化数据成员void fun():功能函数,实现对一维数组进行逆序。void show():功能函数, 输出数据成员Array();析构函数,撤销对象。(3 )在主函数中对类测试。例如 int a10=1,2,3,4,5,6,7,8,9,0;3、定义一个类名为 Array,为指针变量 p 动态申请空间,并初始化。具体要
17、求如下:(1 )私有数据成员char *p;int s;/s 用来存放合成的数(2)公有成员函数Array(char *t):构造函数,用参数初始化数据成员void fun():功能函数,实现对一个字符串中的数字字符,组合成一个整数。void show():功能函数, 输出数据成员Array();析构函数,撤销对象。(3 )在主函数中对类测试。 (如输入 ”a2bc3de4,输出 234) 。(五)继承与派生:定义一个圆类 circle 作为基类,公有派生出圆柱体的类 colum,求出圆柱体的体积。具体要求如下:(1 )类 circle 保护数据成员: float r; /圆的半径公有构造函数
18、: circle(float); /初始化 r公有成员函数: float getr(); /取圆的半径 rdouble area(); /求圆的面积(2 )类 colum保护数据成员: float h; /圆柱体的高公有构造函数: colum(float,float); /初始化 r 和 h公有成员函数: float geth(); /取圆柱体的高 hdouble vol (); /求圆柱体的体积(3 )编写一个程序测试该类,测试数据及要求如下:圆柱体对象:v(1.0,3.0); 本程序的执行结果如下: 圆柱体属性数据: 半径:1 米高度:3 米 面积:3.14 平方米 体积:9.42 立方米