VC 课程实践正确答案(1)(8)

2019-08-31 22:51

}

int b[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int n=4;

array test(b,n); test.xuanzhuan(); test.show();

21.建立一个类NUM,求指定数据范围内的所有合数(非质数)。提示:合数定义是“一个数,除了1和它本身,还有其它约数,这样的数叫合数”。 具体要求如下: (1)私有数据成员

? int *data:动态存放在指定范围内求出的所有合数。 ? int span1,span2:存放指定范围的下限和上限。 ? int num:存放span1与span2之间的合数个数。 (2)公有成员函数

? NUM(int n1, int n2) :构造函数,用参数n1和n2初始化span1和span2,同时初始化num。

? int isComposite (int x ):判断x是否为合数。若是合数,返回1,否则,返回0。

? void process( ) :求指定范围内的所有合数,把它们依次存放在数组data中,并将求出的合数个数赋给num。

? void print( ):输出求出的素数个数及所有合数,每行输出8个合数。 ? ~NUM( ):释放动态分配的存储空间。 (3) 在主函数中完成对该类的测试。定义一个NUM类对象test,指定查找范围为100~200,即求100至200之间的所有合数。通过test调用成员函数完成求合数及输出合数的工作。

#include class Num{ int *data;

int span1,span2; int num; public:

Num(int n1,int n2); int iscomposite(int x); void process(); void print(); ~Num(); };

Num::Num(int n1,int n2) {

span1=n1; span2=n2; num=0;

data=new int[n2-n1]; }

int Num::iscomposite(int x) {

for(int i=2;i

void Num::process() {

for(int i=span1;i<=span2;i++) if(iscomposite(i)) data[num++]=i; }

void Num::print() {

cout<<\在\和\之间的合数个数为:这些合数为:\ for(int i=0;i

cout<

Num::~Num() {

delete []data; }

void main() {

int n1,n2;

cout<<\输入下限和上限:\ cin>>n1>>n2; Num test(n1,n2); test.process(); test.print(); }

\

22.建立一个类Saddle_point,求一个数组中的所有鞍点。提示:鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。 具体要求如下: (1)私有数据成员

? int a[4][4]:存放二维数组元素。

? int b[4][4]:存放二维数组中的鞍点值。 ? int num:存放鞍点个数。 (2)公有成员函数

? Saddle_point(int data[][4]):构造函数,用参数int data[][4]初始化数组a,,同时初始化数组b与num 的值均为0。

? void process( ):求数组a所有鞍点(如果有鞍点),把它们行、列、及值相应存放在数组b中,并将求出的鞍点个数赋给num。

? void print( ):输出数组a、鞍点个数,与鞍点坐标及相应值。

(3)在主程序中定义数组int b[ ][4]={2, 6, 3, 4, 5, 6, 5, 5, 5, 7, 6, 7, 1, 9, 2, 7}作为原始数组。定义一个Saddle_point类对象fun。通过fun调用成员函数完成求鞍点及输出工作。 (4)#include (5)class var{

(6) double a[100]; (7) int n; (8)public:

(9) var(double x[],int n1);

(10) double average(double x[],int n); (11) void variance(double x[],int n); (12) void show(); (13)};

(14)var::var(double x[],int n1)

(15){

(16) for(int i=0;i

(20)double var::average(double x[],int n) (21){

(22) double ave=0;

(23) for(int i=0;i

(28)void var::variance(double x[],int n) (29){

(30) double ff=0;

(31) for(int i=0;i

(34) cout<<\均方差为:\

(35)}

(36)void var::show() (37){

(38) cout<<\平均值为:\(39) variance(a,n); (40)}

(41)void main() (42){

(43) double x[100]={23,56,77,568,34,54,9.5,31,78}; (44) int n1=9; (45) var test(x,n1); (46) test.show(); (47)}

23.分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数

分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其约简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。求m、n最大公约数的一种方法为:将m、n较小的一个数赋给变量k,然后分别用{ k,k-1,k-2,?,1}中的数(递减)去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数就是m*n/v。试建立一个分数类Fract,完成两个分数相加的功能。 具体要求如下: (1)私有数据成员

? int num,den :num为分子,den为分母。 (2)公有成员函数

? Fract(int a=0,int b=1):构造函数,用a和b分别初始化分子num、分母den。 ? int ged(int m,int n):求m、n的最大公约数。此函数供成员add()函数调用。 ? Fract add(Fract f):将参数分数f与对象自身相加,返回约简后的分数对象。 ? void show( ):按照num/den的形式在屏幕上显示分数。

(3)在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add完成f1和f2的相加,将得到的分数赋给对象f3,显示分数对象f3。

#include class fract{

int num,den; public:

fract(int a=0,int b=1); int ged(int m,int n); fract add(fract f); void show(); };

fract::fract(int a,int b) {

num=a; den=b; }

int fract::ged(int m,int n) {

for(int i=m;i>=1;i--) if(m%i==0&&n%i==0)return i; }

fract fract::add(fract f) {

int n,d,p,q;

p=ged(den,f.den); d=den*f.den/p;

n=num*f.den/p+f.num*den/p; q=ged(n,d);

Return fract(n/q,d/q); }


VC 课程实践正确答案(1)(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:黄冈中学最新高考数学题型分析含黄冈密卷

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

马上注册会员

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