C++初学必备实验.docx
《C++初学必备实验.docx》由会员分享,可在线阅读,更多相关《C++初学必备实验.docx(22页珍藏版)》请在冰豆网上搜索。
C++初学必备实验
(一)VisualC++6.0的上机操作
一、实验目的
1.熟悉VC++6.0集成开发环境。
2.掌握在VC++集成开发环境下编辑、编译、连接和运行一个C++程序的步骤。
3.通过运行简单的C++程序,初步了解C++源程序的结构和特点。
二、实验内容
1.启动VisualC++6.0集成开发环境
VisualC++6.0是微软公司1998年推出的visualstudio系列产品之一,它提供了强大的编译能力以及良好的界面操作性。
能够对Windows下的C++程序设计提供完善的编程环境。
同时它对网络、数据库等方面的编程也提供相应的环境支持。
使用VisualC++6.0编制并运行程序也是编辑(把程序代码输入)、编译(成目标程序文件)、连接(成可执行程序文件)、运行(可执行程序文件)四个步骤,其中第一步的编辑工作是最繁杂而又必须细致地由人工在计算机上来完成,其余几个步骤则相对简单,基本上由系统自动完成。
确认你所使用的计算机是否已经安装VisualC++6.0,若已经安装,则执行“开始”→“程序”→“MicrosoftVisualStudio”→“VisualC++6.0”命令即可启动VisualC++6.0,否则,则应先安装VisualC++6.0。
启动VisualC++6.0,进入到它的集成开发环境窗口,其具体窗口式样如图2-1所示。
图1-1VisualC++6.0集成开发环境式样
图中所示VisualC++6.0的窗口从大体上可分为四部分。
上部是菜单和工具条;左边是工作区显示窗口,这里将显示处理过程中与项目相关的各种文件种类等信息;右边是视图区,这里显示和编辑程序文件的操作区;下边是输出窗口区,程序调试过程中,进行编译、链接、运行时输出的相关信息将在此处显示。
2.创建工程
使用VisualC++6.0编制并处理C++程序时要创建工程,因此必须先要了解VisualC++6.0的工程(有的资料也翻译成项目)的概念,而工程又与工程工作区相关联。
实际上,VisualC++6.0是通过工程工作区来组织工程及其各相关元素的,就好像是一个工作间,以后程序所牵扯到的所有的文件、资源等元素都将放入到这一工作间中,从而使得各个工程之间互不干扰,使编程工作更有条理。
这种思想反应到实现上就是一个工作区对应于一个独立的文件夹。
简单的情况下,一个工作区中用来存放一个工程,代表着某一个要进行处理的程序。
如果需要,一个工作区中也可以用来存放多个工程,其中可以包含该工程的子工程或者与其有依赖关系的其他工程。
创建工程工作区之后,系统将创建出一个相应的工作区文件,后缀为“.dsw”,用来存放与该工作区相关的信息;另外还将创建出的其他几个相关文件是:
工程文件(后缀是“.dsp”)以及选择信息文件(后缀是“.opt”)等。
在Windows环境下通过双击工作区文件或工程文件都可以打开相应的工程。
VisualC++6.0已经预先为用户准备好了近20种不同的工程类型以供选择,选定不同的类型意味着让VisualC++6.0系统帮着提前做某些不同的准备以及初始化工作(例如,事先为用户自动生成一个所谓的底层程序框架,并进行某些隐含设置,如隐含位置、预定义常量、输出结果类型等)。
工程类型中,其中有一个为“Win32ConsoleApplication”的类型,称之为控制台应用,它是我们首先要掌握的、用来编制运行C++程序方法中最简单的一种。
此种类型的程序运行时,将出现并使用一个类似于DOS的窗口,这个类似于DOS的窗口就是控制台,通过它提供对字符模式的各种处理与支持。
实际上,用此种类型的工程开发的应用程序是具有字符界面的应用程序。
此种类型的工程小巧而简单,并且足以解决并支持本课程中涉及到的面向对象编程内容与技术,使我们把重点放在面向对象思想的理解及程序的设计,而并非界面处理等方面,至于VisualC++6.0支持的其他工程类型,我们在今后的学习和工作中遇到再逐渐了解、掌握与使用。
创建工程的步骤为:
首先,选择“File”→“New”→“Projects”命令,会弹出如图2-2所示的对话框,从左侧选项中选择“Win32ConsoleApplication”项,在右侧“Location”文本框中填入存放与工程工作区相关的所有文件及其相关信息的文件夹的路径及名称,当然也可通过点击其右部的“…”按钮去选择并指定这一文件夹即子目录位置。
在“Projectname”文本框中填入工程名,注意,此时VisualC++6.0会自动在其下的Location文本框中用该工程名建立一个同名的子目录,随后的工程文件以及其他相关文件都将存放在这个目录下。
图1-2VisualC++6.0新建工程对话框
然后,单击OK进入下一个对话框,如图2-3所示。
图1-3新建控制台工程类型选择对话框
从图中可以看到有四种类型的控制台工程可供选择:
若选择“Anemptyproject”项将生成一个空的工程,工程内不包括任何东西。
若选择“Asimpleapplication”项将生成包含一个空的main函数和一个空的头文件的工程。
若选“A"HelloWorld!
"application”项将生成包含一个有显示出“HelloWorld!
”字符串的输出语句的main函数和一个空的头文件的工程。
若选择“AnapplicationthatsupportsMFC”项的话,可以利用VisualC++6.0所提供的基础类库来进行编程。
选择“Finish”,系统自动建立一个基于控制台的工程。
建立好工程的VisualC++6.0系统界面如图2-4所示。
图1-4建立控制台工程后的系统界面
3.编辑源程序
工程建好之后,下一步要做的工作就是在工程中建立一个源程序并编辑它。
选择时“Project”→“AddToProject”→“New”命令,打开新建对话框,在“Files”标签下选择“C++SourceFile”类型,在右边的“File”文本框中填入源程序的文件名,单击“OK”按钮完成源程序的创建。
界面如图2-5所示。
图1-5新建源程序的对话框界面
建立好源程序后会在VisualC++6.0右边的视图区打开并显示该源程序,在这里我们可以键入代码,编辑源程序,如图2-6所示。
图1-6编辑源程序的界面
4.编译、连接、运行程序
源程序编辑完成后,首先选择执行“Build”菜单中的“Compile”项,对源程序进行编译。
若编译中发现错误或警告,将在Output窗口中显示出它们具体的出错或警告信息以及所在的行,可以通过这些信息的提示来修改程序中的错误或警告。
编译通过后,可以选择菜单的第二项Build来进行链接生成可执行程序。
在链接中出现的错误也将显示到Output窗口中。
最后就可以运行程序,选择Execute项,VisualC++6.0将运行已经编好的程序,执行后将出现一个结果界面,如图2-7所示。
其中的“pressanykeytocontinue”是由系统产生的,使得用户可以浏览输出结果,直到按下了任一个键盘按键时再返回到编辑界面。
图1-7程序运行的界面
这些编译、生成、执行这些操作也可以通过单击工具条上的相应的命令按钮来快捷的完成。
另外,如果源程序编辑后没有编译就单击了“执行”按钮,系统会自动的进行编译、连接和执行操作;如果源程序已经编译过了,即上次运行后没有编辑源程序,这时单击“执行”按钮,系统就不再编译和连接而是直接执行上次生成的可执行程序了。
三、思考题
(1)设计一个C++程序,输出以下信息:
***************
Hello!
***************
(2)设计一个程序,从键盘输入一个矩形的长与宽,求其周长和面积。
实验数据:
50,40
(3)从键盘输入一个四位整数n=abcd,从左到右用a、b、c、d表示各位的数字,现要求依次输出从右到左的各位数字,即输出另一个三位数m=dcba,试设计程序。
实验数据:
1234
(二)简单C++程序运行
一、实验目的
1.了解C++对C语言的扩充与增强,并善于在编写程序过程中应用这些新的功能。
2.进一步熟悉在所用的VC++集成开发环境下编辑、编译、连接和运行C++程序的方法。
3.进一步熟悉C++程序的结构和编程方法;掌握类及其成员的定义方法;掌握对象的创建方法。
4.预习:
C++数据类型、数组、常量、变量、引用类型、控制语句、函数等相关知识。
二、实验内容
1.请先阅读下面的程序,写出程序运行的结果。
#include//包含头文件命令
usingnamespacestd;//使用名字空间std
intmain()
{
cout<<"This"<<"is";
cout<<"a"<<"C++";
cout<<"program."<return0;
}
2.输入以下程序,进行编译,观察编译结果,如果有错误,请修改程序,再进行编译,直到没有错误,然后进行连接和运行,并分析运行结果。
#include//包含头文件命令
usingnamespacestd;//使用名字空间std
intmain()
{inta,b;//定义两个变量a和b
cout<<"Pleaseinputtoaandb:
"<cin>>a>>b;//等待用户从键盘输入数据
cout<<"Max="<return0;//主函数返回0至操作系统
}
intmax(intx,inty){return(x>y) ?
x:
y;}//求两个数中的大者的函数
3.分析并写出下列程序的运行结果,然后上机运行验证。
#include
intfunc1(inta,intb)
{
intc;
a+=a;
b+=b;
c=func2(a,b);
return(c*c);
}
intfunc2(inta,intb)
{
intc;
c=a*b%3;
return(c);
}
voidmain()
{
intx=7,y=17;
cout<}
4.程序分析:
4.1分析下面的程序,并给出程序运行的结果:
#include
classchange
{
charc1,c2;
public:
voidset(chara){c2=((c1=a)-32);}
voidprint()
{cout<};
voidmain()
{
changea,b;
a.set('a');
b.set('b');
a.print();
b.print();
}
4.2按下面的要求编写并调试程序:
下面是一个类的测试程序,给定主函数,请写出类的定义,构成一个完整的程序,使执行程序后输出结果为:
88+32=120
88-32=56
给定的主函数为:
#include
usingnamespacestd;
……
voidmain()
{
Tstt;
t.init(88,32);
t.print();
}
三、思考题
1.某班第1组有10个学生,进行了C++考试,编写程序将考试成绩输入一维数组,并将C++成绩用冒泡法、选择法两种排序算法,由低到高的顺序排序后输出。
实验数据:
90、85、80、75、70、65、60、55、50、45
2.输入一个5行5列的二维数组,编程实现:
求出其中的最大值和最小值及其对应的行列位置;求出对角线上各元素之和。
实验数据:
12345
23456
34567
45678
56789
四.按要求写出实验报告
根据实验的真实情况,进行分析,写出实验报告。
(三)类及对象的封装性
1.实习目的及要求:
1)掌握类及其成员的定义方法;
2)掌握对象的创建方法;
2.预习:
预习类及其成员定义,对象的创建和使用
3.实验内容:
3.1分析下面的程序,指出错误的地方
classCSample
{
inta=2.5;
public:
intb;
voidPrint()
{cout<voidSet(int,int);
}
voidSet(intx,inty)
{
a=x;
y=b;
}
voidmain()
{
CSampleSam1,Sam2;
Sam1.Set(2,3);
Sam2.Set(5,6);
Sam1.Print();
Sam2.Print();
Cout<Cout<}
3.2编写并调试程序:
定义一个描述学生基本情况的类,数据成员包括姓名、学号、英语、数学、计算机成绩。
成员函数包括设置姓名、学号和三门课程的成绩、输出数据、以及求平均值。
设计主函数,在主函数里调用设置“姓名、学号和三门课程的成绩”的成员函数设置各数据;调用输出数据成员函数,实现各数据的输出;调用求平均值的成员函数,求三门课的平均成绩,并输出显示。
3.3调试下列程序,指出程序实现的功能及程序输出结果。
进一步理解类的定义和使用。
#include
#include
classCTria
{
floatx,y,z;
public:
voidSetData(floata,floatb,floatc)
{
if(a+b>c&&a+c>b&&b+c>a)
{x=a;y=b;z=c;}
elsex=y=z=0;
}
floatArea()
{
floatt=(x+y+z)/2;
returnsqrt(t*(t-x)*(t-y)*(t-z));
}
};
voidmain()
{
CTriaa1;
a1.SetData(3,4,5);//A
cout<<"三角形面积="<}
4.写出实验报告。
根据实验的真实情况,进行分析,写出实验报告。
(四)构造函数与析构函数
1.实习目的及要求:
1)掌握构造函数和析构函数定义方法;
2)掌握构造函数的重载、具有默认值的构造函数的使用方法;
3)加深对构造函数的特殊用途的理解。
2.预习:
预习构造函数和析构函数的定义、构造函数的重载、具有默认值的构造函数以及构造函数的特殊用途等相关知识。
3.实验内容:
3.1分析下面的程序,指出程序运行的结果:
1)分析下面的程序,指出程序运行的结果:
#include
classCylinder
{
public:
Cylinder(){}
Cylinder(doubler,doubleh);
voidsetcylinder(doubler,doubleh);
doublegetradius(){returnradius;}
doublegetheight(){returnheight;}
doublevolume();
doublesurface_area();
private:
doubleradius;
doubleheight;
};
constdoublePI=3.1415926;
Cylinder:
:
Cylinder(doubler,doubleh)
{
radius=r;
2
height=h;
}
voidCylinder:
:
setcylinder(doubler,doubleh)
{
radius=r;
height=h;
}
doubleCylinder:
:
volume()
{
doublevol;
vol=PI*radius*radius*height;
returnvol;
}
doubleCylinder:
:
surface_area()
{
doublearea;
area=2*PI*radius*height+2*PI*radius*radius;
returnarea;
}
voidmain()
{
Cylindercylinder1(7.0,12.0),cylinder2;//A
cylinder2.setcylinder(12.3,18.7);
cout<<"theradiusofcylinder1is:
\t"<cout<<"theheightofcylinder1is:
\t"<cout<<"thevolumeofcylinder1is:
\t"<cout<<"thesurfaceareaofcylinder1is:
\t"<cout<<"theradiusofcylinder2is:
\t"<cout<<"theheightofcylinder2is:
\t"<cout<<"thevolumeofcylinder2is:
\t"<cout<<"thesurfaceareaofcylinder2is:
\t"<}
2)分析下面的程序,指出程序的错误:
#include
#include
classSample
{
inti;
public:
intj;
Sample(intx)
{
i=x;
3
}
~Sample()
{
exit
(1);
cout<<"撤消"<}
};
voidmain()
{
Samplea1(10),a2(20);
exit
(1);
cout<<"撤消"<}
3)将下面的程序补充完整:
#include
classtest{
private:
intnum;
floatf1;
public:
test();
test(___,___);
getint(){returnnum;}
getfloat(){returnf1;}
};
test__test()
{
cout<<"默认初始化"<____=0;
____=0.0;
}
test____test(__n,__f)
{
cout<<"初始化"<_____=n;
_____=f;
}
voidmain()
{
testa;
testb(2,5.5);
}
4、写出实验报告。
根据实验的真实情况,进行分析,写出实验报告。
*(五)对象成员
1.实习目的及要求:
1)理解对象成员的概念;
2)掌握对象成员的初始化方法。
2.预习:
预习对象成员,对象的创建和使用,*this指针等相关知识。
3.实验内容:
分析调试程序指出程序运行的结果:
1)分析下面程序中的对象传递,写出输出结果。
#include
classA
{
inti;
public:
A(intx){i=x;}
intget(){returni;}
};
intcube(Aa)
{returna.get()*a.get()*a.get();}
voidmain()
{Aa1(10),a2(20);
cout<cout<}
2)分析对象成员的调用,写出程序结果。
#include
2
classB
{
private:
inta,b;
public:
B(){}
B(inti,intj);
voidshowb();
};
classA
{
private:
Bc;
public:
A(){}
A(inti,intj);
voidshowa();
};
A:
:
A(inti,intj):
c(i,j)
{}
voidA:
:
showa()
{
c.showb();
}
B:
:
B(inti,intj)
{
a=i;
b=j;
}
voidB:
:
showb()
{
cout<<"a="<}
voidmain()
{
Aa1(5,6);
a1.showa();
}
4.写出实验报告。
根据实验的真实情况,进行分析,写出实验报告。