VC++程序设计课程实践基础题(2)

2019-08-30 13:35

为保持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? int fun( ):求公式的累加和。 ? void show( ):输出求得的结果。

(3)在主程序中定义对象s,对该类进行测试。

3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。 具体要求如下:

(1)私有数据成员

? float array[20]:一维整型数组。 ? int n:数组中元素的个数。 (2)公有成员函数

? MOVE(float b[],int m):构造函数,初始化成员数据。

? void average():输出平均值,并将数组中的元素按要求重新放置。 ? void print():输出一维数组。

(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。 4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。 具体要求如下:

(1)私有数据成员

? int *array:一维整型数组。 ? int n:数组中元素的个数。 (2)公有成员函数

? MOVE(int b[],int m):构造函数,初始化成员数据。

? void exchange():输出平均值,并将数组中的元素按要求重新放置。 ? void print():输出一维数组。 ? ~MOVE():析构函数。

(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。

5.定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。 具体要求如下:

(1)私有数据成员

? int n:整型数字。

? int y: 标记是否为回文数。 (2)公有成员函数

? Palindrome (int x) :构造函数,根据x参数初始化数据成员n,y初

始化为0。

? void huiwen () :判断数n是否为绝对回文数。 ? void show( ) :若该数为回文数,则在屏幕显示。

(3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome类对象p,

用a初始化p,完成对该类的测试。

6.定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。

8

具体要求如下:

(1)私有数据成员

? char *str;

? int y:标记是否为回文字符串。

(2)公有成员函数

? String (char *s) :构造函数,用给定的参数s初始化数据成员str。y

初始化为0。

? void huiwen () :判断str所指向的字符串是否为回文字符串。 ? void show( ) :在屏幕上显示字符串。

(3)在主程序中定义字符串char s[]=”ababcedbaba”作为原始字符串。定义一个

String类对象test,用s初始化test,完成对该类的测试。

7.建立一个类PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。

1 1 2 4 3 1 2 5 10 4 3 6 11 9 8 7 12 16 15 14 13

具体要求如下: (1)私有数据成员

? int (*p)[20]:指向按照折叠规律存放方阵的二维整型数组。 ? int startnum:折叠方阵的起始数。 ? int n:存放方针的层数。 (2)公有成员函数

? PHALANX (int s, int m ):构造函数,初始化成员数据。 ? void process():生成起始数为startnum的n行方阵。 ? void print():输出折叠方阵。 ? ~ PHALANX( ):析构函数。 (3)在主程序中对该类进行测试。

8.建立一个MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。

9


VC++程序设计课程实践基础题(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:二期绿带测试题答案(IC)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: