2012年C++二级考试.doc_第1页
2012年C++二级考试.doc_第2页
2012年C++二级考试.doc_第3页
2012年C++二级考试.doc_第4页
2012年C++二级考试.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一 C+程序的运行环境和运行方法一、实验目的和要求:掌握VC+环境的调试和使用;学会安装开发工具; 学习完整的C+程序开发过程;理解简单的C+程序结构。二、实验内容:1、使用VisualC+6.0建立一个标准C+程序,编译、运行以下程序: 具体步骤:(1)启动Visual C+ 6.0开发环境从“开始”菜单中选择“程序”| Microsoft Visual Studio 6.0 | Microsoft Visual C+6.0,显示Visual C+ 6.0开发环境主窗口,如图1-1所示。菜单栏程序编辑区项目工作区图1-1 Visual C+6.0的主窗口在Visual C+主窗口的顶部是菜单栏,左侧为项目工作区窗口,右侧是程序编辑窗口。工作区窗口用来显示所设定的工作区的信息,程序编辑窗口用来输入和编辑源程序。(2)建立和运行只包含一个C+源程序的方法建立只包含一个C+源程序的方法一个最简单的C+程序只包含一个源程序的文件,建立这样的一个C+源程序的方法是在Microsoft Visual C+主窗口的菜单栏中选择“File New”命令,弹出“New”对话框,单击“Files”选项卡,在其列表框中选择“C+ Source File”选项,表示要建立一个新的C+源程序文件,然后在对话框右半部分的Location文本框中输入准备编辑的源程序文件的存储路径(假设为F:C+),表示准备编辑的源程序文件将存放在F盘C+子目录下,在其上方的File文本框中输入准备编辑的源程序文件的名字(假设为example1.cpp),如图1-2所示。图1-2 Files中New选项卡单击“OK”按钮回到主窗口,在程序编辑窗口编辑源程序文件,如图1-3所示。图1-3 编辑源文件选择“File Save”命令或快捷键Ctrl+S保存源程序文件。也可以选择“File Save As”命令指定新的文件名和路径,这时输入和编辑的源程序就以example1.cpp为文件名存放在F:C+子目录下。运行只包含一个C+源程序的方法若要运行当前的源文件或一个已有的源文件,首先需要对该源文件进行编译,只要选择“Build Compile example1.cpp”命令进行编译即可。在选择编译命令后,屏幕上出现一个对话框,内容是“This build command requires an active project workspace. Would you like to create a default project workspace?”(此编译命令要求有一个有效的项目工作区。你是否同意建立一个默认的项目工作区?),如图1-4所示。图1-4 对话框提示信息单击“是(Y)”按钮,表示同意由系统建立一个默认的项目工作区,然后开始编译。在进行编译时,编译系统检查源程序文件有无语法错误,然后在主窗口下部的调试信息窗口输出编译的信息。如果有错误,就会指出错误的位置和性质,如图1-5所示。图1-5 编译提示信息如果存在致命错误(error)和警告性错误(warning),则需要修改并重新编译;没有错误,则编译成功,生成一个example1.obj文件。编译成功后,就可以对程序文件进行连接了。选择主菜单中的“Build Build example1.exe”命令,表示要求连接并建立一个可执行文件example1.exe。运行该文件,在屏幕就可以看到输出结果。2、建立一个多文件的程序,求最大值。主函数放在一个文件中,Max函数放在另一个文件中。如果一个程序中包含多个文件,则需要建立一个project file(项目文件),project file是放在Workspace(项目工作区)中,并在项目工作区的管理下工作的,因此,如果有多个项目文件存在时,还需要建立一个项目工作区。在编译时,先分别对每个文件进行编译,然后将项目文件中的文件连接成一个整体,再与系统的有关资源进行连接,生成一个可执行文件,最后执行这个文件。在实际操作时有两种方法:一种是由用户建立项目工作区和项目文件;另一种是用户只建立项目和文件,而不建立项目工作区,由系统自动建立项目工作区。后一种方法比前一种方法操作更简单。由用户建立项目工作区和项目文件的具体操作为:(1)分别编辑好同一个程序的多个源程序文件,并存放在指定的目录下。如一个程序包含两个源程序文件file1.cpp和file2.cpp,如图1-6、1-7所示,并已经把它们保存在F:C+子目录下。图1-6 file1.cpp源文件图1-7 file2.cpp源文件(2)建立一个项目工作区建立一个项目工作区需要在Microsoft Visual C+6.0的主窗口中选择“File New”命令,然后单击此对话框上方的Workspace选项卡,在对话框右部Workspace name和Location中分别输入工作区名ws1和路径名F:C+ws1,如图1-8所示。图1-8 选择FileNew命令Workspace选项卡单击“OK”按钮,返回主窗口。此时在屏幕左部的工作区窗口中显示了“Workspace ws1:0 project(s)”, 说明当前的工作区名是ws1,其中没有放入项目文件,如图1-9所示。图1-9 新建工作区ws1(3)建立项目文件选择“File New”命令,然后单击此对话框上方的Project选项卡,在对话框左部的列表中选择“Win32 Console Application”项,在右部Project name和Location中分别输入项目文件名Project和路径名F:C+ws1project1,并按需要选中是否加入当前工作区,还是创建一个新的工作区单选按钮(假设选择加入当前已有工作区),如图1-10所示。图1-10 选择FileNew命令Project选项卡单击“OK”按钮后,在弹出的对话框上选中“An empty project”单选按钮,单击“Finish”按钮,则系统弹出一个工程信息对话框,单击“OK”按钮,出现图1-11所示对话框。可以看到在屏幕左部的工作区窗口中显示了“Workspace ws1:1 project(s)”, 说明当前的工作区名是ws1,其中已经放入了项目文件project1。图1-11 新建的项目文件project1项目文件建好后,选择将源程序文件加入到该项目文件中。选择“Project Add To Project Files”命令,找到要加入的源程序文件file1.cpp和file2.cpp,把他们加入到项目文件project1中,其显示结果如图1-12所示。此时可以对加入多个源程序文件的项目文件进行编译和连接了。方法是:单击主菜单中的“Build Build Project1.exe”命令,系统将对整个项目文件进行编译和连接,在窗口下部会显示编译和连接的信息。如果程序有错,会显示出错信息,这时需要进行修改;如果没错,则生成可执行文件Project1.exe。选择主菜单中的“Build Execute Projrct1.exe”命令就可以执行project1.exe。图1-12 加入file1.cpp和file2.cpp 的project1在程序运行时,根据要求输入所需的数据,回车后即得到程序的输出结果。3、编写一个程序,从标准输入流cin读取变量age的值,并将age的值写入输出流。4、编写一个用输入和输出流运算符进行的输入和输出的程序。从键盘输入两个数,分别对两个数进行加,减,乘和除的运算。并输出计算结果,如:23+123=146。三、思考题:C+引入了I/O流运算符,与 C语言相比,它们好处是什么?8实验二 在小范围内用C+增强C的功能1、实验目的和要求:快速掌握C+语言编程的方法,在小范围内增强C+的功能。2、实验内容:(1)用new和delete运算符动态分配内存空间的方法编写程序。从键盘输入33整型数组的数据,并计算出所有元素之和,打印出最大值和最小值。输入输出要用流运算符实现。(2)编写C+风格的程序,解决百钱问题:将1元人民币兑换成1,2,5分的人民币,有多少种换法?(3)在主函数中定义包含10个元素的一维数组,并赋值为9,8,7,6,5,4,3,2,1,0。用引用作函数参数的方法,在函数中实现将数据逆序存放,并在主函数中打印出来。(4)假设我们班有50名同学,每个同学都报出自己的生日, 每个同学的生日都不相重的概率只有0.0296,如果有100个同学,不相重的概率为3.072510-7。相重复的概率如此之大与我们主观想象不同。写一个程序,输入同学的人数n计算出其生日不重复的概率。然后在用彷真的方法, 利用随机数产生每个同学的生日,计算出生日不重复的概率并与前面的结果进行比较。注:学生的生日可以用随机数产生,rand()产生032767之间的伪随机数,因为此需要一个种子,种子不同产生的随机数列不同,rand()产生的随机数也不同,可以调用srand(long int *)函数设置种子,比如我们可以获得计算机中的时间获得随机数种子, 以上函数需要包含头文件 stdlib.h3、思考题: (1)与C语言的动态分配内存函数相比,C+的new 和delete运算符的优点是?(2)引用是C+的很重要的功能,在函数定义中,如何使用引用,会实现怎样的效果?实验三 类的定义和应用1、实验目的和要求: 掌握类定义的方法,理解类类型,实例的含义,体会面向对象程序设计中数据隐藏的概念。2、实验内容: (1)定义一个时间类Time,它能提供由时分秒组成的时间。要求能够修改时间和打印出时间。(2)编写一个计数器类,定义一个私有数据成员,通过两个成员函数,分别使其完成加1和减1操作。用构造函数数据成员初始化为0,输出函数可以输出数据成员函数的值。(3)定义一个类包含一个整型数的指针变量,在构造函数中用new分配10各整型数的内存空间,在析构函数中用delete释放内存空间,并编写给内存空间赋值和输出函数。3、思考题: (1)结合第一个例子,说明什么是类?什么是对象?你是如何理解类和对象的? (2)面向对象的程序设计与结构化程序设计有何不同?实验四 类中静态数据成员和友元函数的使用1、实验目的和要求:掌握显式使用this指针的方法;掌握静态数据成员的意义及使用方法;掌握友元函数的使用方法。2、实验内容:(1)有如下类的定义。其中类成员函数copy() 用于实现两个对象间的拷贝。请用两种方法完成该函数的实现: 隐式使用this 指针; 显式使用this 指针,同时保证在copy()函数的定义中(包括参数),都不直接使用对象名;include class Myclass public: Myclass (int a,int b) x=a;y=b; void copy(/请补齐参数) /请完成函数的定义; void print() cout“x=”xendl; cout”y=”yendl; private: int x,y;void main() Myclass my(10,20),t(30,40); my.print(); my.copy(/请补齐实数); my.print(); (2)商店经销一种货物,该货物成箱购进,成箱卖出,购进和卖出时按每箱的重量计价。商店需要记录下目前库存的货物的总重量和总价值。编写一个程序,通过定义类Carlo来模拟商店货物购进和卖出的情况。 (3)类Intcase和类Floatcase分别为整型数集合类和实型数集合数类。将以下程序中缺少的内容补齐,并完成其后要求。class Floatcase private: float num3; public: Floatcase ( float x,float y, float z) /添加初始化内容 void print() /打印数据 ;class Intcase private: int num3; public: Intcase ( int x,int y, int z) /添加初始化内容 void print( ) /打印数据 ; 在类Intcase中再增加一个成员函数,可以将对象的整型数据拷贝给属于类Floatset的对象。此成员函数的原型为:void settofloat(Floatcase &set); /形参为拷贝的目标对象注意在settofloat函数的调用过程中,按照要求,需要给Floatcase类对象中的私有成员赋值。但由于本函数不属于Floatcase类,所以无法直接访问Floatcase类对象中的私有成员。因此还必须在Floatcase类中定义public型的赋值函数,利用该赋值函数来进行间接传值。 办法需要多次调用函数,程序的开销较大,我们可以定义一个友元函数来更轻松的实现上述功能。请完成该友元函数的定义,并进行测试。3、思考题: (1)什么是this指针,它的主要作用是什么? (2)总结静态成员的特点; (3)第3题的示例中我们先声明了类Floatcase,后声明了类Intcase,在完成实验要求后,试试看如果直接将两个类的声明顺序颠倒会如何?思考下这是为什么?实验五 运算符重载1、实验目的和要求:掌握运算符重载的语法要点,学会运算符重载的编程方法。2、实验内容:1.先读程序,预测程序的输出结果,再运行程序验证程序的输出,并完成以下要求: 例子中-=和+=采用了两种不同的重载写法,请思考并回答这两种方式有什么不同? 用友元重载的方式重新编写程序中-=和+=的重载,并进行测试。#include class Vector public:Vector()Vector(int i,int j) x=i;y=j;Vector operator+=(Vector v) /+=的重载x=x+v.x;y=y+v.y;return *this;Vector operator-=(Vector v) /-=的重载,注意和上边+=的重载方式并不相同 Vector temp; temp.x=x-v.x; temp.y=y-v.y; return temp;void display() cout(x,y)endl;private:int x,y;void main() Vector v1(1,2),v2(3,4),v3,v4; v3=v1+=v2; v4=v1-=v2; coutv1=; v1.display(); coutv2=; v2.display(); coutv3=; v3.display(); coutv4=; v4.display();(2)定义一个有理数类,利用该类中的数据成员nume来代表分子,数据成员denom来代表分母,这样每一个该类的对象就相当于一个有理数的分式形态。完成该类的初始化程序以及输出程序,同时重载,=,= =,!=这四种比较运算符,用于比较每个对象的大小;class rationalprivate: long nume,denom;/ nume为分子, denom为分母public:rational(int nume=0, int denom =1;)/请将构造函数补齐int operator(rational r) const;int operator=(rational r) const;int operator= =(rational r) const;int operator!=(rational r) const;/请将以上四种比较运算符的重载定义补齐void set(int x,int y);void disp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论