C++面向对象程序设计的一些作业.docx

上传人:b****5 文档编号:7655628 上传时间:2023-01-25 格式:DOCX 页数:76 大小:33.96KB
下载 相关 举报
C++面向对象程序设计的一些作业.docx_第1页
第1页 / 共76页
C++面向对象程序设计的一些作业.docx_第2页
第2页 / 共76页
C++面向对象程序设计的一些作业.docx_第3页
第3页 / 共76页
C++面向对象程序设计的一些作业.docx_第4页
第4页 / 共76页
C++面向对象程序设计的一些作业.docx_第5页
第5页 / 共76页
点击查看更多>>
下载资源
资源描述

C++面向对象程序设计的一些作业.docx

《C++面向对象程序设计的一些作业.docx》由会员分享,可在线阅读,更多相关《C++面向对象程序设计的一些作业.docx(76页珍藏版)》请在冰豆网上搜索。

C++面向对象程序设计的一些作业.docx

C++面向对象程序设计的一些作业

实验题目(共4题,第1题)

标题:

1、编写输出“HelloC++!

”的C++程序

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

编写一个简单的控制台应用程序,输出“HelloC++!

”。

输入:

输出:

“HelloC++!

”。

输入样例:

输出样例:

Hello

C++!

提示:

1、注意使用usingnamespacestd;明确名字空间;

2、使用cout对象,利用<<流操作符进行输出。

来源:

#include

usingnamespacestd;

intmain()

{

cout<<"HelloC++!

"<

return0;

}

试题查看

标题:

2、求3个数的平均值

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

从键盘上输入3个浮点数,求这3个数的平均值。

输入:

3个浮点数

输出:

3个数的平均值

输入样例:

1.51.61.3

输出样例:

1.46667

提示:

1、用usingnamespacestd;明确名字空间

2、用cin对象,采用>>运算符输入数据

3、用cout对象,采用<<运算符输出数据

#include

usingnamespacestd;

intmain()

{

doublea,b,c,d;

cin>>a>>b>>c;

d=(a+b+c)/3;

cout<

return0;

}

标题:

3、求鞍点

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

输入一个二维矩阵。

找出其中所有的鞍点,如果一个矩阵没有鞍点,输出“Notfound!

”。

所谓“鞍点”,是指满足以下条件的矩阵中的一个数,它在它所在的行上最小、所在列上最大。

该题中假设矩阵中任意两个数互不相等。

输入:

输入数据有多行:

第一行是矩阵的行数m和列数n

从第二行起共包含m行,每行包含n个数,为矩阵的一行数据

输出:

如果矩阵有鞍点,输出鞍点的信息,包括:

所在行、所在列、值

如果没有鞍点,输出Notfound!

输入样例:

34

11235647

12456690

16773418

输出样例:

2

0

16

提示:

1、要求用动态内存分配来完成,可用new和delete实现;

2、屏幕输出只有2016(加回车换行),不能有其它信息。

来源:

#include

usingnamespacestd;

intmain()

{

intm,n,i,j,k;

int**x;

introwmin,linkmax,codr=0,codl=0;

cin>>m>>n;

x=newint*[m];

for(i=0;i

x[i]=newint[n];

for(i=0;i

{

for(j=0;j

cin>>x[i][j];

}

rowmin=x[0][0];

for(i=0;i

{

rowmin=x[i][0];

codl=0;

for(j=0;j

{

codr=i;

//codl=0;

if(x[i][j]

{

rowmin=x[i][j];

codr=i;

codl=j;

}

}

//cout<

//cout<

for(k=0;k

{

if(x[k][codl]>rowmin)

{

//cout<

codl=-1;

break;

}

//elsecout<

}

if(codl!

=-1)

break;

}

if(codl!

=-1)

{

cout<

}

elsecout<<"Notfound!

"<

return0;

}

标题:

4、链表操作

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

建立一个链表,每个节点包括学生的学号、姓名、性别、年龄。

先输入5个学生的数据,再输入一个年龄,如果链表中有年龄等于此年龄的记录,则删除所有年龄等于此年龄的记录,否则在链表的最后增加一个新节点,学号为180姓名为"aaa",性别为"male"。

输入:

创建链表时输入5个职工的职工号和工资,学号为大于100且小于200的整数,姓名为长度小于20的字符串,性别为长度小于10的字符串,年龄为大于等于0且小于200的整数。

输出:

按顺序输出链表中的所有数据,每个数据占一行。

输入样例:

101zhangsanmale30

103lisifemale18

105wangwumale25

107maliumale28

109niuqifemale22

28

输出样例:

101

zhangsan

male

30

103

lisi

female

18

105

wangwu

male

25

109

niuqi

female

22

提示:

要求用动态内存分配实现,注意new和delete的使用。

来源:

#include

#include

#include

usingnamespacestd;

typedefstructData

{

int_number;

string_name;

string_sex;

int_age;

}Data;

typedefstructNode

{

Data_data;

structNode*next;

}Node,*LinkList;

//类的声明

classLinkListed

{

private:

LinkListList;

public:

LinkListed()

{

List=newNode();

List->next=NULL;

}

~LinkListed()

{

if(List==NULL)

return;

else

{

while(List!

=NULL)

{

LinkListp=List;

List=List->next;

deletep;

}

}

}

voidCreate()

{

List=newNode();

LinkListp,q;

q=List;

List->next=NULL;

for(inti=0;i<5;i++)

{

p=newNode();

cin>>p->_data._number>>p->_data._name>>p->_data._sex>>p->_data._age;

q->next=p;

q=p;

}

q->next=NULL;

}

voidIns(intnum,stringname,stringsex,intage)

{

LinkListp,q;

p=List->next;

while(p->next)

p=p->next;

q=newNode();

q->_data._number=num;

q->_data._name=name;

q->_data._sex=sex;

q->_data._age=age;

p->next=q;

q->next=NULL;

}

voidSearch(inta)

{

LinkListp=List,q;

intn=0;

while(p)

{

if(p->_data._age==a)

n++;

p=p->next;

}

if(n==0)

{

charname[20]="aaa";

chargender[10]="male";

Ins(180,name,gender,a);

}

else

{

p=List->next;

while(p)

{

if(p->_data._age==a)

{

for(q=List;q->next!

=p;q=q->next){}

q->next=p->next;

deletep;

p=q;

}

p=p->next;

}

}

}

voiddisplay()

{

LinkListp=List->next;

while(p)

{

cout<_data._number<_data._name<_data._sex<_data._age<

p=p->next;

}

}

};

intmain()

{

inta;

LinkListedL;

L.Create();

cin>>a;

L.Search(a);

L.display();

return0;

}

实验二

标题:

1.函数重载

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

设计一菜单程序,利用函数重载实现员工月工资的计算,计算方法如下:

(1)管理人员的月工资=月薪-缺勤天数×月薪÷22;

(2)销售人员的月工资=底薪+销售金额×提成比例;

(3)计件工人的月工资=产品件数×每件报酬;

(4)计时工人的月工资=工作小时×小时报酬;

输入:

职工类别。

管理人员输入月薪和缺勤天数;销售人员输入底薪、销售金额和提成比例;计件工人输入产品件数和每件报酬;计时工人输入工作小时和小时报酬。

输出:

员工月工资。

输入样例:

1〈--职工类别

5000.01〈--月薪和缺勤天数

输出样例:

4772.73

提示:

1.计算管理人员、销售人员、计件工人、计时工人的月工资的函数原型可以分别设计如下:

doublegetEarning(doublesalary,intabsenceDays);

doublegetEarning(doublebaseSalary,doublesalesSum,doublerate);

doublegetEarning(intworkPieces,doublewagePerPiece);

doublegetEarning(doublehours,doublewagePerHour);

2.菜单程序设计如下:

intmain()

{

...

cout<<"Pleaseselect..."<

cout<<"1:

Manager."<

cout<<"2:

SalesMan."<

cout<<"3:

PiecesWorker."<

cout<<"4:

Hour-Worker."<

cout<<"Others:

Quit"<

cin>>sel;

switch(sel)

{

case1:

cin>>...;

cout<

break;

case2:

cin>>...;

cout<

break;

case3:

cin>>...;

cout<

break;

case4:

cin>>...;

cout<

break;

default:

break;

}

return0;

}

#include

usingnamespacestd;

doublegetEarning(doublesalary,intabsenceDays)

{

return(salary-salary*absenceDays/22);

}

doublegetEarning(doublebaseSalary,doublesalesSum,doublerate)

{

return(baseSalary+salesSum*rate);

}

doublegetEarning(intworkPieces,doublewagePerPiece)

{

return(workPieces*wagePerPiece);

}

doublegetEarning(doublehours,doublewagePerHour)

{

return(hours*wagePerHour);

}

intmain()

{

intsel,workPieces,absenceDays;

doublesalary,baseSalary,salesSum,rate,wagePerPiece,hours,wagePerHour;

cout<<"Pleaseselect..."<

cout<<"1:

Manager."<

cout<<"2:

SalesMan."<

cout<<"3:

PiecesWorker."<

cout<<"4:

Hour-Worker."<

cout<<"Others:

Quit"<

cin>>sel;

switch(sel)

{

case1:

cin>>salary>>absenceDays;

cout<

break;

case2:

cin>>baseSalary>>salesSum>>rate;

cout<

break;

case3:

cin>>workPieces>>wagePerPiece;

cout<

break;

case4:

cin>>hours>>wagePerHour;

cout<

break;

default:

break;

}

return0;

}

标题:

2.引用传递

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

设计一个函数,将两个浮点数传入,然后通过引用把其和、差、积传出。

函数原型如下:

voidMath(floata,floatb,float&sum,float&sub,float&pro);

输入:

输入两个浮点数

输出:

输出两个浮点数的和、差、积。

输入样例:

6.52.3

输出样例:

8.84.214.95

提示:

#include

#include

#include

usingnamespacestd;

typedefstructData

{

int_number;

string_name;

string_sex;

int_age;

}Data;

typedefstructNode

{

Data_data;

structNode*next;

}Node,*LinkList;

//类的声明

classLinkListed

{

private:

LinkListList;

public:

LinkListed()

{

List=newNode();

List->next=NULL;

}

~LinkListed()

{

if(List==NULL)

return;

else

{

while(List!

=NULL)

{

LinkListp=List;

List=List->next;

deletep;

}

}

}

voidCreate()

{

List=newNode();

LinkListp,q;

q=List;

List->next=NULL;

for(inti=0;i<5;i++)

{

p=newNode();

cin>>p->_data._number>>p->_data._name>>p->_data._sex>>p->_data._age;

q->next=p;

q=p;

}

q->next=NULL;

}

voidIns(intnum,stringname,stringsex,intage)

{

LinkListp,q;

p=List->next;

while(p->next)

p=p->next;

q=newNode();

q->_data._number=num;

q->_data._name=name;

q->_data._sex=sex;

q->_data._age=age;

p->next=q;

q->next=NULL;

}

voidSearch(inta)

{

LinkListp=List,q;

intn=0;

while(p)

{

if(p->_data._age==a)

n++;

p=p->next;

}

if(n==0)

{

charname[20]="aaa";

chargender[10]="male";

Ins(180,name,gender,a);

}

else

{

p=List->next;

while(p)

{

if(p->_data._age==a)

{

for(q=List;q->next!

=p;q=q->next){}

q->next=p->next;

deletep;

p=q;

}

p=p->next;

}

}

}

voiddisplay()

{

LinkListp=List->next;

while(p)

{

cout<_data._number<_data._name<_data._sex<_data._age<

p=p->next;

}

}

};

 

intmain()

{

inta;

LinkListedL;

L.Create();

cin>>a;

L.Search(a);

L.display();

return0;

}

法二:

#include

usingnamespacestd;

voidMath(floata,floatb,float&sum,float&sub,float&pro)

{

sum=a+b;

sub=a-b;

pro=a*b;

}

intmain()

{

floata,b,sum,sub,pro;

sum=sub=pro=0;

cin>>a>>b;

Math(a,b,sum,sub,pro);

cout<

return0;

}

标题:

3.函数模板

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

设计一个函数模板,实现两个同类型数据的交换。

将设计好的函数模板分别实例化为两个整型数交换、两个字符交换的模板函数,调用这些函数并输出运行结果。

输入:

分别输入两个整型数和两个字符

输出:

分别输出两个整型数和两个字符交换的结果

输入样例:

59

输出样例:

95

#include

#include

#include

usingnamespacestd;

templateTypechange(Typea,Typeb)

{

Typec;

c=a;

a=b;

b=c;

cout<

return0;

}

intmain()

{

inta,b;

stringc,d;

cin>>a>>b;

cin>>c>>d;

change(a,b);

change(c,d);

return0;

}

标题:

4.默认形参值

时限:

1000ms

内存限制:

10000K

总时限:

3000ms

描述:

设计一个求空间两点距离的函数,要求第2个点的默认值为坐标原点。

输入:

两个点的坐标。

输出:

输出第一个点与原点之间的距离及输入的两个点之间的距离。

输入样例:

111

555

输出样例:

1.73205

6.9282

提示:

函数原型可设计如下:

floatdistance(floatx1,floaty1,floatz1,floatx2=0,floaty2=0,floatz2=0);

来源:

#include

usingnamespacestd;

#include

classpoint

{

private:

floatx,x1;

floaty,y1;

floatz,z1;

public:

floatdistance1()//类的

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

当前位置:首页 > 农林牧渔 > 林学

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

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