(3)在主函数中完成对该类的测试。定义NUM类对象test,通过test调用成员函数完成求素数及输出素数的工作。原始数据为{4, 5, 9, 11, 36, 29, 31, 101, 56, 199}。
#include
int data[10]; int prime[10]; int num; public:
Num(int n[]); int isprime(int x); void process(); void print(); };
Num::Num(int n[]) {
num=0;
for(int i=0;i<10;i++) data[i]=n[i]; }
int Num::isprime(int x) {
for(int i=2;i void Num::process() { int m=0; for(int i=0;i<10;i++) { if(isprime(data[i])==1) { prime[m++]=data[i]; num++; } } } void Num::print() { int m=0; cout<<\素数的个数为:\ for(int i=0;i if(m%4==0)cout< void main() { int n[]={4,5,9,11,36,29,31,101,56,199}; Num test(n); test.process(); test.print(); } 28.编程实现对大于1的整数进行质因数分解,并求出其和。所谓整数的质因子分解是指将整数分解为其所有质数(素数)因数的积,例如,60=2*2*3*5,则整数60的质因数之和为12。定义一个类Decompose实现上述功能。 具体要求如下: (1)私有数据成员 ? int *a:指向存放对应整数的质因数之和的动态存储空间。 ? int *num:指向待分解质因数整数的动态存储空间。 ? int n:整数的个数。 (2)公有数据成员 ? Decompose(int m,int b[ ]): 用m初始化n,并用n初始化为动态申请空间的指针a与num。用参数b给数组a赋值。 ? void print( ):输出数组a以及num所指向的存储空间中的内容。 ? void primenum( ):求整数a[i]的所有质因数(保留重复部分,例如60的质因数为 2,2,3,5,之和为12),并将这些质因数之和存放到指针num所指向的存储空间中。 ? ~Decompose( ):释放动态分配的存储空间。 (3)在主函数中完成对该类的测试。从键盘输入一组大于1的整数,存放在number数组中,定义类Decompose的对象d ,并用 number初始化d ,调用函数primenum( ) 求number 的所有质因数,最后输出测试结果。 #include decompose(int m,int b[]); void print(); void primenum(); ~decompose(); }; decompose::decompose(int m,int b[]) { n=m; a=new int[n]; num=new int[n]; for(int i=0;i void decompose::primenum() { int s,b,flag; for(int i=0;i void decompose::print() { cout<<\输出整数:\ for(int i=0;i decompose::~decompose() { delete []a; delete []num; } void main() { int b,number[1000]; cout<<\输入要输入的整数的个数\ cin>>b; for(int i=0;i>number[i]; } decompose test(b,number); test.primenum(); test.print(); } 29.建立一个类SUM,输入5×5的二维数组,编写程序实现:求出两对角线上各元素的和,求出对角线上行、列下标均为偶数的各元素的积,找出对角线上其值最大的元素以及它在数组中的位置。 具体要求如下: (1)私有数据成员 ? int array[5][5]:二维整型数组。 ? int s:数组array两对角线元素的和。 ? int a:数组array对角线上行、列下标均为偶数的各元素的积 ? int b,m,n:数组array对角线上其值最大的元素以及它在数组中的位置。 (2)公有成员函数 ? SUM(int d[5][5]):构造函数,初始化成员数据。 ? void process1():求二维数组两对角线元素的和。 ? void process2():求二维数组两对角线上行、列下标均为偶数的各元素的积。 ? void process3():求二维数组两对角线上其值最大的元素和它在数组中的位置。 ? void print():输出二维数组(每行输出5个元素)及其它所求的值。 (3)在主程序中对该类进行测试。 #include #include int array[5][5]; int s; int a; int b,m,n; public: sum(int d[5][5]); void process1(); void process2(); void process3(); void print(); }; sum::sum(int d[5][5]) { for(int i=0;i<5;i++) for(int j=0;j<5;j++) array[i][j]=d[i][j]; s=0; a=1; b=m=n=0; } void sum::process1() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(i==j||(i+j)==4)s+=array[i][j]; } void sum::process2() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(i==j||(i+j)==4) if(i%2==0&&j%2==0) a*=array[i][j]; } void sum::process3() { b=array[0][0]; for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(i==j||(i+j)==4) if(b