内容发布更新时间 : 2024/12/22 14:12:31星期一 下面是文章的全部内容请认真阅读。
第4章 课程实践示例
4.1基础题示例
1.任务
建立一个类Integer_String,把一个正整数转换为字符串。具体要求如下: (1)私有数据成员
? int num:要转换的正整数。
? char *s:用动态空间存储转换得到的字符串。 (2)公有成员函数
? Integer_String(int n):用参数n初始化数据成员num。 ? int f():求数据成员num的位数。
? void fun():把正整数num转换为字符串s。 ? void show():输出数据成员num和s; ? ~Integer_String():释放动态空间。 (3)在主函数中对定义的类进行测试。用正整数12345初始化类Integer_String
的对象test,调用相关成员函数后输出转换结果。
2.系统设计
(1)任务分析
通过类Integer_String的成员函数f()求出数据成员num的位数,并以此为依据给数据成员s分配大小适当的动态空间,在成员函数fun()中依次取出num的各位数字并转换成对应字符后存入数据成员s,程序结束前释放为s分配的动态空间。类的定义如下:
class Integer_String{ int num; char *s; public:
Integer_String(int); int f(); void fun(); void show();
~Integer_String(); };
(2)算法设计
? 求整数num(设num为正整数)的位数
定义变量d(初值为1)表示num(n)的位数,以n>10作为循环条件,每循环一次d的值增加一位,n去掉一位(n/=10),循环结束后d的值就是n的位数。
4
为保持num的值不变,把其赋给变量n,通过n求num的位数。
? 把整数num转换为字符串s ①取出num(n)的个位并转换为字符,然后赋给s的首字符(char *p=s):*p=n+'0';
②去掉n的个位:n/=10; ③p指向s的下一位:p++; ④重复①②步直至n==0(循环条件为:n!=0,即n); ⑤给字符串s添加结束标记,并指向最后一个字符:*p--='\\0'; ⑥把字符串s逆序:使p1指向s的首字符:char *p1=s,交换*p1和*p,然后p1指向后一个字符、p指向前一个字符:p1++,p--;直到p1和p相遇(循环条件为:p1
在主函数中以整数初始化Integer_String的对象,并调用其成员函数show()输出测试结果(整数num和字符串s)。主函数定义如下:
void main(){
Integer_String test=12345; test.fun(); test.show(); }
用以测试的整数为: 12345
预期的输出结果为: 整数为:12345 字符串为:12345
4.源程序清单
#include
5
} void fun(){ int n=num,len=f(); s=new char[len+1]; for(char *p=s,*p1=s;n;p++){ *p=n+'0'; n/=10; } *p--='\\0'; while(p1
void main(){ Integer_String test=12345; test.fun(); test.show(); }
6
第5章 课程实践题选
5.1基础题
1.试建立一个类PP,求出下列多项式的前n项的值。
n?0?1?Pn(x)??x n?1
?((2n?1)xP(x)?(n?1)P(x))/nn?1n?1n-2?具体要求如下:
(1)私有数据成员
? int n:前若干项的项数。 ? double x:存放x的值。
? double *p:根据n的大小动态申请存放Pn(x) 前n项的数组空间。 (2)公有成员函数
? PP(int num,double x1):构造函数,初始化数据成员n和x,使p指向
动态申请的数组空间。 ? ~PP():析构函数,释放p指向的动态内存空间。
? double fun(int n1,double x):递归函数,用于求多项式Pn(x)的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数
调用。
? void process( ):完成求前n项的工作,并将它们存放到p指向的动态数组中。
? void show( ):输出n和x,并将前n项以每行4个数的形式输出到屏幕上。
(3) 在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的
对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。 2.试建立一个类SP,求f(n,k)?1?2?3?....?n,另有辅助函数power(m,n)用于求m。 具体要求如下:
(1)私有成员数据。
? int n,k:存放公式中n和k的值; (2)公有成员函数。
? SP(int n1,int k1):构造函数,初始化成员数据n和k。 ? int power(int m, int n):求mn。
7
nkkkk