C++上机题目复习及答案Word下载.docx

上传人:b****6 文档编号:22458010 上传时间:2023-02-04 格式:DOCX 页数:32 大小:32.58KB
下载 相关 举报
C++上机题目复习及答案Word下载.docx_第1页
第1页 / 共32页
C++上机题目复习及答案Word下载.docx_第2页
第2页 / 共32页
C++上机题目复习及答案Word下载.docx_第3页
第3页 / 共32页
C++上机题目复习及答案Word下载.docx_第4页
第4页 / 共32页
C++上机题目复习及答案Word下载.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

C++上机题目复习及答案Word下载.docx

《C++上机题目复习及答案Word下载.docx》由会员分享,可在线阅读,更多相关《C++上机题目复习及答案Word下载.docx(32页珍藏版)》请在冰豆网上搜索。

C++上机题目复习及答案Word下载.docx

"

请输入"

N<

'

*'

得矩阵"

endl;

for(i=0;

i<

N;

i++){

for(j=0;

j<

j++)

cin>

>

a[i][j];

Arrayd(N);

d、input(a[0]);

原始数组为:

\n"

;

d、print();

d、change();

转置后得数组为:

}

voidArray:

:

input(int*a){

for(inti=0;

N*N;

i++)

x[i]=*a++;

print(){

((i+1)%3)?

cout<

x[i]<

\t'

change(){

inttemp;

for(intj=0;

i;

j++){

temp=x[i*N+j];

x[i*N+j]=x[j*N+i];

x[j*N+i]=temp;

}

2.编程题

模拟人脑神经网络得神经元结构模型如下图所示:

其中,xi表示输入信号,wi表示输入信号得加权系数,y表示神经元得输出,它们得之间得关系为:

这里,∑表示各项得与,exp(z)为求z得自然指数值ex得函数,包含在头文件math、h中,其函数原型为doubleexp(doublez)。

试定义一个NN类实现上述模型。

具体要求如下:

1)私有成员

●floatx[5],dt:

数组x与数组w分别存放输入信号xi及其加权系数wi;

dt存放非零参数σ。

●doubley:

神经元得突出。

2)公有成员:

●NN(floatt[],floatd)用数组t初始化加权系统wi,用d初始化dt。

●voidfun(floatt[]):

用数组t初始化xi,并根据上述公式计算y得值。

●voidprint():

输出输入信号与输出信号得值

在主函数中,用输入信号{1、2,3、5,2、3,3、2,2、8}以及加权系数{o、5,0、8,1、2,1、8,1、1}对该类进行测试。

math、h>

classNN{

floatx[5],w[5],dt;

doubley;

NN(floatt[],floatd);

//用数组t初始化加权系统wi,用d初始化dt。

voidfun(floatt[]);

//用数组t初始化xi,并根据上述公式计算y得值。

voidprint();

//输出输入信号与输出信号得值

floata[5]={1、2,3、5,2、3,3、2,2、8};

floatb[5]={0、5,0、8,1、2,1、8,1、1};

NNt(b,0、2);

t、fun(a);

t、print();

NN:

NN(floatt[],floatd){

5;

w[i]=t[i];

dt=d;

voidNN:

fun(floatt[]){

x[i]=t[i];

doublen=0、0;

n+=(x[i]-w[i])*(x[i]-w[i]);

y=exp(-n/(2*dt*dt));

x[i]="

cout<

'

y="

y<

附加题:

3.面向对象编程:

几何图形类

【要求】按以下描述与要求建立两个类:

基类Rectangle与派生类Cube:

Rectangle

私有成员:

doublex1,y1;

//左下角得坐标

doublex2,y2;

//右上角得坐标

公有成员

Rectangle(doublea=0,doubleb=0,doublec=0,doubled=0);

//带缺省值得构造函数

doublegetwidth();

//计算并返回矩形得宽

doublegetlength();

//计算并返回矩形得长

virtualvoiddisplay();

//输出矩形得各坐标及长宽

注:

正立方体Cube得底面矩形从基类继承

Cube:

stringname;

//立方体名称(字符串对象)

doubleh;

//立方体高度

公有成员:

Cube(string="

double=0,……);

voidset(string,double);

//修改立方体标识符与高度值

voiddisplay();

//输出立方体全部信息,并计算输出体积

Cubeadd(Cube&

S);

//将参数对象S得高度加到this对象上。

以上成员函数得参数名如有未给出得则自已命名。

头文件包含语句为:

#include<

string、h>

主函数要求:

(1)定义Rectangle类对象A{坐标:

10,10,30,40};

定义Cube类对象B{坐标:

20,10,30,40;

名称与高度:

Box,60}、C(C数据由B拷贝生成)与D(D数据暂无)。

(2)调用函数set修改对象C得名称与高度值。

数据为{Trunk,95}。

(3)调用函数display及相关函数输出对象A、B与C得全部数据,计算输出B与C得体积。

每个对象得信息占一行。

(4)调用add函数,计算D=B+C。

输出D得全部数据,计算并输出D得体积。

classRectangle{

doublex1,y1;

doublex2,y2;

Rectangle(doublea=0,doubleb=0,doublec=0,doubled=0){

x1=a,y1=b;

x2=c,y2=d;

doublegetwidth(){return(x2-x1);

}//计算并返回矩形得宽

doublegetlength(){return(y2-y1);

}//计算并返回矩形得长

voiddisplay();

classCube:

publicRectangle{

charname[10];

doubleh;

Cube(doublea=0,doubleb=0,doublec=0,doubled=0,

char*s=0,doubleh1=0):

Rectangle(a,b,c,d){//带缺省值得构造函数

if(s)strcpy(name,s);

h=h1;

voidset(char*,double);

//修改立方体标识符与高度值

voiddisplay();

Cubeadd(Cube&

S);

RectangleA(10,10,30,40);

CubeB(20,10,30,40,"

Box"

60),C(B),D;

B、set("

Trunk"

95);

A、display();

B、display();

C、display();

D=B、add(C);

D、display();

voidRectangle:

display(){

矩形:

"

左下角得坐标:

x1<

'

y1<

右上角得坐标:

x2<

y2<

长:

(x2-x1)<

宽:

(y2-y1)<

voidCube:

set(char*s,doubleh1){

h=h1;

strcpy(name,s);

doublemj=getwidth()*getlength();

长方体:

底面积为:

mj<

体积为:

mj*h<

CubeCube:

add(Cube&

S){

h+=S、h;

return*this;

第十一周上机题目

1.建立一个类NUM,求指定范围内得所有素数(质数)。

1)私有数据成员。

●intdata[25];

依次存放指定范围内得所有素数。

●intspanl,span2;

存放要求计算得素数得范围。

●intnum;

存放span1与span2之间得素数个数。

2)公有成员函数。

●构造函数NUM(inta,intb);

初始化所要求得素数得范围span1、span2及num(值为0)。

●voidprocess():

求出指定范围内得所有素数,把它们依次存放在数组data中,并将求出得素数得个数赋给num。

输出求出得所有素数。

3)在主程序中对该类进行测试。

使用测试数据span1=100,span2=200。

即求100~200之间得所有素数。

classNUM{

intdata[25];

//依次存放指定范围内得所有素数。

intspan1,span2;

//存放要求计算得素数得范围。

intnum;

//存放span1与span2之间得素数个数。

NUM(inta,intb);

voidprocess();

NUMa(100,200);

a、process();

a、print();

NUM:

NUM(inta,intb){

span1=a;

span2=b;

num=0;

voidNUM:

process(){

inti,n,f=0;

for(i=span1;

=span2;

for(n=2,f=0;

n<

=sqrt(i);

n++)

if(i%n==0){f=1;

break;

if(f==1)continue;

data[num++]=i;

print(){

num;

){

data[i]<

if(++i%6==0)cout<

已知由一个数组派生出另一个数组得派生规则如下:

假定原始数组为a[10],新数组为b[10],则b[i]得值为数组a中大于a[i]得元素得个数。

例如,对于说明“inta[]={1,2,3,4,5};

intb[5];

”,其中a[1]=2,数组a中有3个元素比a[1]大,则b[1]=3。

试建立一个实现此功能得类ARRAY。

●inta[10],b[10];

a存放原始数组,b存放派生数组。

2)公有成员函数。

●构造函数ARRAY(intdata[10]);

初始化成员数组a。

●voidprocess();

由数组a根据上述派生类规则,用循环语句计算数组b得各元素。

●voidprint();

屏幕显示数组a与b。

classARRAY{

inta[10],b[10];

ARRAY(intdata[10]);

//初始化成员数组a。

voidprocess();

//由数组a根据上述派生类规则,用循环语句计算数组b得各元素。

voidprint();

//屏幕显示数组a与b。

inta[]={7,4,9,23,56,44,18,33,21,17};

ARRAYarray(a);

array、process();

array、print();

ARRAY:

ARRAY(intdata[10]){

10;

a[i]=data[i];

b[i]=0;

voidARRAY:

for(intk=0;

k<

k++)

if(a[k]>

a[i])b[i]++;

a[10]="

a[i]<

b[10]="

b[i]<

物品保管箱管理应用程序

【要求】按以下描述与要求建立一个类Boxes,执行主函数对其测试。

int*box;

//指向保管箱数组,下标为箱号,元素值为0表示空箱;

大于0表示该箱中存入得物品数量。

char*flag;

//指向客户标识符数组(下标为箱号,与box数组配对使用)

staticintsum;

//累计存入物品数量

intxh;

//保管箱得个数

Boxes(intnum=10);

//构造函数,动态分配box与flag数组空间,长度为num。

~Boxes();

//析构函数,释放分配得内存

voidput(intn,charm);

//选择一个空箱存入n件物品,填写客户标识符,并将物品数量累加到sum;

若找不到空箱则输出提示信息。

voidget(charm);

//根据客户标识符(元素下标)查找存储得物品,找到后取出并清空保管箱(置0)。

若找不到指定则输出提示信息。

//输出保管箱类所有数据,统计占用箱个数与空闲箱个数。

最后输出存入物品数量

在类定义外面对静态成员做定义性说明并赋初值为零:

intBoxes:

sum=0;

1)定义Boxes类对象A,B

(2)。

数组元素初始值为零。

2)调用函数put为对象A与B做存储操作:

A、put(5,‘R’);

B、put(9,’K’);

A、put(8,‘P’);

B、put(15,‘H’);

B、put(40,‘F’);

调用函数display输出对象A与B得全部数据。

3)调用函数put与get为对象A与B做存储与取出操作:

B、get(‘H’);

A、get(‘S’);

A、get(‘R’);

A、put(12,‘M’);

4)调用函数display输出对象A与B得全部数据。

classBoxes{

int*box;

char*flag;

staticintsum;

intxh;

Boxes(intnum=10);

~Boxes();

voidput(intn,charm);

voidget(charm);

BoxesA,B

(2);

//数组元素初始值为零。

A、put(5,'

R'

);

B、put(9,'

K'

A、put(8,'

P'

B、put(15,'

H'

B、put(40,'

F'

A库:

A、display();

B库:

B、display();

B、get('

A、get('

S'

);

A、put(12,'

M'

Boxes:

Boxes(intnum){

box=newint[num];

flag=newchar[num];

xh=num;

box[i]=flag[i]=0;

~Boxes(){

delete[]box;

delete[]flag;

voidBoxes:

put(intn,charm){

inti=0;

while(box[i]!

=0&

&

i++<

xh);

if(i<

xh&

box[i]==0){

box[i]=n;

flag[i]=m;

sum+=n;

elsecout<

无空箱存放客户"

m<

得物品!

\n\n"

get(charm){

while(flag[i]!

=m&

i<

xh)i++;

if(flag[i]!

=m)

没有找到客户"

物品!

else

{

sum-=box[i];

box[i]=0;

intn=0;

xh;

if(box[i]>

0)

cout<

客户"

flag[i]<

存放物品数量:

box[i]<

件。

elsen++;

占用箱个数:

xh-n<

个,空闲箱个数:

个。

\n存入物品总数量有:

sum<

第十二周上机题目

一.编程题

【程序功能】找出给定范围内得与亲数。

对于两个正整数,如果其中得一个整数就是另一个整数得全部真因子之与,反之亦然,则称这两个数为“与亲数”。

例如,220有真因子“1,2,4,5,10,11,20,22,44,55,110”,其与为284,而284有真因子“1,2,4,71,142”,其与为220,因此220与284就就是一对与亲数。

【编程要求】

1.试建立一个类NNM

●私有数据成员

intn1,n2;

//查找数据得范围

inta[10][2];

//存储m~n(m<

n)之间得所有与亲数对,并存储到a数组中

intnum;

//统计与亲数对得个数

●公有成员函数

1)缺省构造函数:

初始化数据成员n1,n2为0。

2)带参构造函数NNM(intm,intn):

用参数初始化数据成员n1,n2。

3)voidfind()函数用于查找n1~n2之间得所有与亲数对并存储到数组中

4)打印函数voidprint(),将结果输出到屏幕

classNNM{

intn1,n2;

inta[10][2];

NNM(){n1=0;

n2=0;

num=0;

NNM(inta,intb){

n1=a,n2=b,num=0;

voidfind();

NNMa(2,500);

a、find();

voidNNM:

find(){

intsum1=0,sum2=0;

inti,n;

for(i=n1;

=n2;

for(sum1=0,n=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1