c实验答案.docx

上传人:b****8 文档编号:9847953 上传时间:2023-02-07 格式:DOCX 页数:104 大小:176.50KB
下载 相关 举报
c实验答案.docx_第1页
第1页 / 共104页
c实验答案.docx_第2页
第2页 / 共104页
c实验答案.docx_第3页
第3页 / 共104页
c实验答案.docx_第4页
第4页 / 共104页
c实验答案.docx_第5页
第5页 / 共104页
点击查看更多>>
下载资源
资源描述

c实验答案.docx

《c实验答案.docx》由会员分享,可在线阅读,更多相关《c实验答案.docx(104页珍藏版)》请在冰豆网上搜索。

c实验答案.docx

c实验答案

创新源于实践

《面向对象C++程序设计》

 

计算机科学与技术学院《面向对象C++程序设计》课程组

 

实验指导书目录

实验一C++基础练习1

实验二C++简单程序设计练习4

实验三类与对象

(一)9

实验四类与对象

(二)14

实验五派生类与继承21

实验六虚函数与多态性31

实验七函数模板与类模板40

实验八输入输出的格式控制44

实验九文件的输入输出49

实验十综合练习55

实验十一设计时间类——计算程序的运行时间68

附录:

C++语言上机实验环境介绍71

实验一c++基础练习

一、实验性质

验证性实验2学时

二、实验目的和要求

1.掌握c++程序的基本格式与规范,学会编写简单的c++程序。

2.理解c++程序结构的特点。

3.熟悉c++程序基本的输入输出操作。

4.掌握c++数据类型常量和变量以及修饰符的使用方法。

5.掌握函数定义、函数调用和函数说明的方法。

6.熟悉作用域运算符的功能和基本使用方法。

7.掌握c++内存的动态分配与释放方法。

8.理解引用的概念,掌握引用的使用方法。

三、实验内容:

1编写一个简单程序,输出“welcomeyou”,并给程序加一行注释“fisrtc++

program”。

2编写一个完整的包含输入和输出的简单c++程序。

3编写内置函数求解2x^+4x+5的值,x为整数,并用主函数调用该函数。

利用函数重载,重载上面的函数,x为浮点数。

4编写一个程序,对一个整数数组求和,求和的结果使用全局变量sum存储,同时对整数中的奇数求和,结果使用局部变量sum存储,在主程序将两个结果输出。

本题要求体会和理解作用域运算符的概念与基本使用方法。

5编写一个程序动态分配一个浮点空间,输入一个数到该空间中,计算以该数为半径的圆的面积并在屏幕上显示,最后释放该空间,请使用new,delete运算符。

四、实验步骤

第一步:

根据实验内容编写下面的代码进行调试。

#include

voidmain()

{//firstc++program

cout<<”\nwelcomeyou\n”;

}

第二步:

下面的程序对用户输入的口令进行判断,输出不同的结果。

#include

voidmain()

{

intpass;

cout<<”\npleaseinputyoupassword:

”;

cin>>pass;

if(pass==12345)cout<<”welcomeyou.”;

elsecout<<”yourpasswordisnotright.”;

}

第三步:

根据题目要求编写下面的代码进行调试。

#include

inlineintf(intx)

{

return2*x*x+4*x+5;

}

voidmain()

{

cout<

}

第四步:

根据题目要求编写下面的代码进行调试。

#include

inlinedoublef(doublex)

{

return2*x*x+4*x+5;

}

inlinedoublef(doublex)

{

return2*x*x+4*x+5;

}

voidmain()

{

intx=5;

doubley=5.2;

cout<

cout<

}

第五步:

在主函数内外同时使用sum做计数器,并在主函数中同时使用。

#include

inta[]={1,2,3,4,,5,6,7,8,9,10};

intsum;

voidmain()

{

inti;

intsum=0;

for(i=0;i<10;i++)

{if(a[i]%2!

=0)sum=sum+a[i];

∷sum=∷sum+a[i];

}

cout<<”sumofallis:

”<<∷sum;

cout<<”sumofoddis:

”<

}

第六步;根据题目要求编写代码如下。

#include

voidmain()

{

double*r;

r=newdouble;

cin>>*r;

cout<<”areais:

”<<3.14*(*r)*(*r);

deleter;

}

 

实验二c++简单程序设计练习

一、实验性质

验证性实验2学时

二、实验目的和要求

1.掌握if语句的用法。

2.掌握switch语句的用法。

3.掌握循环和多重循环的用法。

4.掌握递归函数的用法。

5.掌握简单的指针操作方式。

6.掌握c++内存的动态分配与释放方法。

三、实验内容

根据输入的百分制按五分制的成绩输出。

百分制与五分制之间的关系见下表。

分别使用if分支结构和switch结构编写程序。

百分制

五分制

90~100

5

80~89

4

60~79

3

0~59

2

编程求3~100之间的所有素数。

编写程序列出婓波那挈(fibonacci)数列的前20项。

分别用迭代和数组的方法编程。

输入100个整数,从小到大排列并输出。

使用递归方法解决背包问题:

设有一个背包可以放入的物品数量为s,现有n件物品,重量分别为w1,w2,…,wn,问能否从这n件物品中选择若干件放入此背包,使得放入的重量之和正好为s。

如果存在一种符合上述要求的选择,称此问题有解,否则问题无解。

读入9个双精度的数,把他们存放在一个存储块里,然后求出它们的积。

使用动态分配和指针操作。

四、实验步骤

#include

voidmain()

{

intscore;

chargrade;

cout<<”pleaseinputscore:

”<

cin>>score;

if(score>=0&&score<=100)

{

if(score>89)grade=’5’;

elseif(score>79)grade=’4’;

elseif(score>59)grade=’3’;

elsegrade=’2’;

cout<<”gradeis”<

}

else

cout<<”dataerror\007\n”;

}

第二步:

使用switch结构解决成绩问题转换问题。

#include

voidmain()

{

intscore,s,sun;chargrade;

cout<<”pleaseinputscore:

”<

cin>>(score);

ifscore)

{

s=score/10;

switch(s);

{

case0;

case1;

case2;

case3;

case4;

case5;grade=’2’;break;

case6;

case7;grade=’3’;break;

case8;grade=’4’;break;

case9;

case10;grade=’5’;break;

}

cout<<”gradeis”<

}

else

cout<<”dataerror\007\n”;

}

第三步:

使用双重循环解决素数问题。

#include

voidmain()

{

inti,j;

for(i=3;i<=100;i++)

{

for(j=2;j

if(i==j)

cout<

}

cout<<”\n”;

}

第四步:

使用迭代方法解决裴波那契数列问题。

#include

voidmain()

{

inta,b,j,f;

a=1;b=1;

cout<

for(j=3;j<=20;j++)

{

f=a+b;

a=b;

b=f;

cout<

if(j%5==0)cout<<”\n”;//每输出5个换行

}

}

第五步:

使用数组方法解决裴波那契数列问题。

#include

voidmain()

{

inti,fib[20]={1,1};//初始化

for(i=2;i<20;i++)

fib[i]=fib[i-1]+fib[i-2];

for(i=1;i<=20;i++);

{

cout<

if(i%5==0)cout<<”\n”;//每输出5个换行

}

}

第六步:

使用选择法解释排序问题。

#include

voidmain()

{

inti,j,data[120],temp;

intmin_a;

cout<<”\npleaseinput”<

”;

for(i=0;i<=size;i++)

cin>>data[i];

for(i=0;i

{

min_a=i;

for(j=i;j

if(ata[j]

min_a=j;

data[min_a]=data[i];

data[i]=temp;

}

cout<<”\naftersorted:

”;

for(i=0;i

cout<<””<

}

第七步:

使用递归方法解决背包问题。

#include

voidmain()

{

intf;

if(s==0)f=1;

elseif((s<0)||((s>0)&&(n

)))f=0;

elseif(knap(s-w[n],n-1)==1){cout<<”\nw[“<

elsef=knap(s,n-1);

returnf;

}

voidmain()

{

inti;

i=knap(29,8);

if(i==0)

cout<<”nosolution\n”;//背包问题无解

第八步:

使用动态分配和指针操作求9个double数的乘积。

#include

constsize=9;

double*init()//返回指针值的函数

{

returnnewdouble(size);//分配空间将首地址返回

}

voidreadin(double*a)//从a指向的存储单元开始读入数据

{

inti;

cout<<”\nplealseenter”<

”;

for(i=0;i

cin>>*(a+i);//读入数据到a+i指向的存储单元

}

voidproduct(double*arr,intsize,double*resule)

//计算从arr指向的存储单元开始的

//连续size个存储单元的乘积

{

for(size--,*result=*(arr+size);--size>=0;*result=*(arr+size));

//乘积的结果放入result指向的存储单元

}

voidmain()

{

double*x,res,*init();

if((x=init())==null)

return;

readin(x);

product(x,size,&res);

cout<<”theproductis:

”<

deletex;

}

 

实验三类与对象

(一)

一、实验性质

验证性实验、设计性实验4学时

二、实验目的与要求

1、掌握类、类的数据成员、类的成员函数的定义方式

2、理解类成员的访问控制方式

3、掌握对象的定义和操作对象的方法

4、理解构造函数和析构函数的定义与执行过程

5、掌握重载构造函数的方法

6、了解拷贝构造函数的方法

三、总的设计思想,及环境语言、工具等

通过设计一个time类和一个stock类达到实验目的,使用visualc++或turboc3.0集成开发环境

四、实验内容:

1.声明一个时间类,时间类中有3个私有数据成员(hour,minute,second)和两个公有成员函数(settime和print_time).settime根据传递的3个参数为对象设置时间;print_time负责将对象表示的时间显示输出。

在主函数中,建立一个时间类的对象,设置时间为9点20分30秒并显示该时间。

2.使用构造函数代替上面的settime成员函数,并在主函数中使用构造函数设置时间为10点40分50秒,并显示该时间。

3.重载时间类的构造函数(不带参数)使小时,分,秒均为0。

4.在时间类的析构函数中输出“goodbye!

5.定义拷贝构造函数并调用。

五、主要实验步骤:

1.#include

classtime

{

public:

voidsettime(intc,intm,ints)

{

clock=c;

minute=m;

second=s;

}

voidprint_time()

{

cout<

"<

"<

}

private:

intclock,minute,second;

};

voidmain()

{

timetime1;

time1.settime(9,20,30);

time1.print_time();

}

2.

#include

classtime

{

public:

time(intc,intm,ints)

{

clock=c;

minute=m;

second=s;

}

voidprint_time()

{

cout<

"<

"<

}

private:

intclock,minute,second;

};

voidmain()

{

timetime1(10,40,50);

time1.print_time();

}

3.#include

classtime

{

public:

time()

{

clock=0;

minute=0;

second=0;

}

time(intc,intm,ints)

{

clock=c;

minute=m;

second=s;

}

voidprint_time()

{

cout<

"<

"<

}

private:

intclock,minute,second;

};

voidmain()

{

timetime1;

time1.print_time();

timetime2(9,20,30);

time2.print_time();

}

4.#include

classtime

{

public:

time()

{

clock=0;

minute=0;

second=0;

}

time(intc,intm,ints)

{

clock=c;

minute=m;

second=s;

}

print_time()

{

cout<

"<

"<

}

~time()

{

cout<<"goodbye"<

}

private:

intclock,minute,second;

};

voidmain()

{

timetime1;

time1.print_time();

timetime2(9,20,30);

time2.print_time();

}

5.#include

classtime

{

public:

time()

{

clock=0;

minute=0;

second=0;

}

time(intc,intm,ints)

{

clock=c;

minute=m;

second=s;

}

print_time()

{

cout<

"<

"<

}

~time()

{

cout<<"goodbye"<

}

time(consttime&p)

{

clock=p.clock;

minute=p.minute;

second=p.second;

}

private:

intclock,minute,second;

};

voidmain()

{

timetime1;

time1.print_time();

timetime2(9,20,30);

time2.print_time();

timetime3(9,20,30);

timetime4(time3);

time3.print_time();

time4.print_time();

}

实验四类与对象

(二)

一、实验性质

验证性实验、设计性实验4学时

二、实验目的和要求

1.掌握对象数组的定义与使用方法。

2.理解对象指针的概念,学会用指针引用对象。

3.了解this指针的工作方式。

4.掌握静态数据成员和静态成员函数的基本使用方法。

5.理解友元与友元函数的作用,掌握其使用方法。

三、实验内容

使用实验三中的股票类stock,定义一个对象数组存放连续5个交易日的股票信息。

编写一个主函数,计算两个stock对象(前后两日)的当日收盘价,计算当日涨幅。

用指针引用对象数组中的两个对象。

在主函数中调用该函数计算从第2个交易日开始每天的当日涨幅。

在stock类中定义一个静态数据成员,记录当前stock对象的数量。

设计一个成员函数assign-stock为对象赋值,其中的形式参数是对另一个stock对象的引用,使用this指针避免对自己的赋值,在主函数中显示用assign-stock赋值的对象。

定义一个友元函数计算stock对象的当日开盘价是否高于当日开盘价。

若是,返回真;否则,返回假。

四、实验步骤

第一步:

定义类stock,计算两个stock对象(前后当日)的当日收盘价并计算当日涨幅。

#include“iostream.h”

constn=5;

classstock

{

public:

stock(){};

stock(intn,floatmi,floatb,floate);

voidset_stock(intn,floatma,floatmi,floatb,floate);

voidset_stock();

floatget-end();

voidshow_stock();

private:

intnumber;

floatmax,min,begin,end;

);

stock:

:

stock(intn,floatma,floatmi,floatb,floate)

{

number=n;

max=ma;

min=mi;

begin=b;

end=e;

}

voidstock:

:

set_stock(intn,floatma,floatmi,floatb,floate)

{

number=n;

max=ma;

min=mi;

begin=b;

end=e;

}

floatstock:

:

get_end()

{

returnend;

}

voidstock:

:

show_stock()

{

cout<

cout<

cout<

cout<

cout<

}

voidstock:

:

set_stock()

{

cout<<”number:

”;

cin>>number;

cout<<”max:

”;

cin>>max;

cout<<”min:

”;

cin>>min;

cout<<”begin:

”;

cin>>begin;

cout<<”end:

”;

cin>>end;

}

voidmain()

{

inti;

stocksl[100];

stock*p;

for(i=0,p=s1;i

p->set_stock();

for(i=0,p=s1;i

p->show_stock();

for(i=1,p=s1+1;i

cout<<”\n”<<\

(p->get_end()-(p-1)->get_end())/(p-1)->get_end()*100<<”%”;

}

第二步:

添加静态数据成员。

#include

constn=2;

classstock

{

public:

stock(){}

stock(intn,floatma,floatmi,floatb,floate);

voidset_stock(intn,floatma,floatmi,floatb,floate);

voidset_stock();

floatget_end();

voidshow_stock();

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

当前位置:首页 > 高等教育 > 文学

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

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