VC++程序设计课程实践基础题 下载本文

内容发布更新时间 : 2024/5/8 19:46:48星期一 下面是文章的全部内容请认真阅读。

第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 class Integer_String{ int num; char *s; public: Integer_String(int n){ num=n; } int f(){ int d=1,n=num; while(n>10){ d++; n/=10; } return d;

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