(2013版)C++程序设计教学规范

更新时间:2024-05-05 13:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《C++程序设计》课程教学规范

一、课程简介

课 程 名:C++程序设计

课程编号:09171433A0(计算机学院/软件学院) 学 分:4 修读方式:必修

开课专业:计算机科学/软件工程/管理科学与工程/电子商务/网络工程 开课学期:第一学年第2学期 教学周数:16

授课学时:64(4学时×16周) 实验学时:42(3学时×14周) 课程类别:专业核心课

先修课程:程序设计基础/计算机导论

考试形式:笔试(闭卷120分钟)、上机考试(120分钟、两次) 成绩构成方式及比例:

总成绩=上机实验×10%+上机考试成绩(期中20%+期末30%)+笔试成绩40%

C++程序设计是软件工程专业的一门主干基础课,主要介绍C++语言的相关知识和编程思想,重点是面向对象程序设计的思想和方法。本课程内容不再重复C语言已完成的教学内容,而针对C++的扩展内容,开展教学和实验。由于学生对编程已经有了一定基础,因此学习难度和任务较前一学期(程序设计基础课程或计算机导论)都有所提高。重点要求学生掌握面向对象程序设计内容。

通过本课程的学习,使学生掌握程序设计的基本方法并逐步形成正确的程序设计思想和习惯、能够掌握用C++语言进行程序设计并具备调试程序的能力,能理解面向对象的程序设计思想并掌握面向对象方法的关键技术,逐步领会算法在程序设计中扮演的重要角色,领会C++程序设计的精髓所在,为后续计算机专业课程打下基础。

二、课堂教学内容

(一)基本数据和表达式(6学时) 1.概述

2.C++的字符集与词汇

3.C++的基本数据类型与存储形式 4.数据对象与访问 5.内存访问

第 1 页

6.表达式 7.数据输入和输出

(二)程序控制结构(0学时) 1.选择控制 2.循环控制 3.判断表达式的使用 4.转向语句

(三)函数(6学时) 1.函数的定义与调用 2.函数参数的传递 3.函数调用机制

4.内联函数和重载函数

5.变量存储特性与标识符作用域6.多文件程序结构 7.命名空间

8.终止程序执行 (四)数组(4学时) 1.一维数组 2.指针数组 3.二维数组

4.数组做函数参数 5.动态存储

6.字符数组与字符串 (五)结构(8学时) 1.定义结构和访问结构 2.结构数组 3.链表

(六)类与对象(12学时) 1.类与对象的定义和访问 2.构造函数和析构函数 3.类的其他成员 4.类的包含

(七)运算符重载(8学时) 1.运算符重载规则

2.用成员或友元函数重载运算符3.几个典型运算符重载 4.类类型转换 (八)继承(6学时) 1.类之间的继承 2.基类和派生类 3.基类的初始化

第 2 页

4.继承的应用实例 5.多继承

(九)虚函数和多态性(6学时) 1.静态联编

2.类指针的关系

3.虚函数与动态联编 4.纯虚函数与抽象类

5.虚函数和多态性的应用 (十)文件操作(4学时) 1.文件处理

三、实验教学内容及考核要求

(一)上机实验内容和建议学时

实验1:循环结构程序设计(3学时)(10分) 实验2:函数(3学时) (10分) 实验3:数组(3学时) (10分) 实验4:指针的应用(7.5学时) (15分) 实验5:类与对象(7.5学时) (15分) 实验6:运算符重载(4.5学时)(10分) 实验7:继承(6学时)(10分)

实验8:虚函数与多态性(4.5学时)(10分) 实验9:文件(3学时)(10分)

实验10:黑白子交换(选做)(给适当的附加分) 上机实验考察规范:

实验教学共分为10个题目(其中必做题9个,选做题1个),有的题目是单独的问题,有的题目则分为若干个小问题,详见附录,共84学时,总分100,计入总成绩时按20%折合。

各题目给分标准:

(1)在建议学时内完成,结果正确,程序结构良好,满分; (2)在建议学时内完成,结果正确,程序结构稍差,减0.5-1分; (3)虽未能在建议学时内完成,但结果正确,程序结构良好,减1-2分; (4)能完成,给题目总分的一半分数; (5)不能完成,计0分。

四、建议参考书

《C++程序设计基础(第三版)》,周霭如编著,电子工业出版社。(教材) 《C++程序设计》,谭浩强编著,清华大学出版社。 《C++程序设计教程——基于案例与实验驱动》,邬延辉等编著,机械工业出版社。

第 3 页

五、附录(实验报告)

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验1 循环结构程序设计(6学时) 实验目的

(1) 掌握循环结构程序的概念。

(2) 掌握while语句的执行过程并熟练使用。 (3) 掌握do_while语句的执行过程并熟使用。 (4) 掌握for语句的执行过程并熟练使用。 (5) 掌握多重循环的概念、执行过程并熟练使用。

(6) 掌握break语句、continue语句和goto语句的执行程序并熟练使用。 (7) 初步学会设置断点调试程序的方法。

(8) 初步掌握使用“单步执行”方式跟踪程序程序执行过程的方法。 实验内容

1、输入带符号的短整型数,求该数是几位数。 思考并验证: (1)画出程序流程图

(2)你的程序中循环的结束条件是什么

2、设t=1×2×??×n,编写程序求t>10000时的最小n值。要求使用while语句实现循环。 思考并验证:

(1)写出程序运行结果

(2)画出程序流程图

第 4 页

(3)如果用for语句,如何实现

3、写程序找出100┄1000之间、其各位数之和等于5的整数。要求使用二重循环编程。 思考并验证:

(1)程序的输出结果是什么

(2)画出程序流程图

第 5 页

4、rand( )函数产生一个在10┄100之间的随机整数,要求用户猜测这个整数。输入一个猜测想的整数,判断是否与产生的随机数相等,由屏幕显示判断结果。如果猜得不对,重新猜这个数,直到猜出这个数为止。 实验指导

Visual C++中提供了用于产生随机数的有关整数: rand( ) 产生0—32767 之间的随机整数

srand(number) 种子函数。其中number 是无符号整型参数,称为种子值。当种子值number 不同时,函数rand()产生的随机数序列也不同。

time(0) 返回用整型数表示的系统当前时间。在此作为srand函数的参数。函数srand()和rand( )在头文件stdlib.h中定义 函数time(0) 在time.h文件中定义

第 6 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验2 函数(6学时) 实验目的

(1) 熟悉VC6应用程序的构成。 (2) 掌握函数的定义及其调用。

(3) 掌握C++函数传值参数、传指针参数和引用参数的定义和应用。 (4) 掌握嵌套调用和递归调用的概念并熟练使用。 (5) 掌握重载函数的概念并熟练使用。

(6) 初步学会使用VC6 Debug功能跟踪程序执行到函数的内部,观察函数的调用过程。 实验内容

1、键盘上输入x、y和z的值,求s=f(x,y,z)的值。其中

思考并验证:

sin(x)sin(y)sin(z)f(x,y,z)???sin(y)*sin(z)sin(z)*sin(x)sin(x)*sin(y)(1) 自己给出至少三组输入数据,验证结果是否正确。

(2) 在你的程序中定义了哪几个函数,写出函数原型。

(3) 你定义的函数采用了哪种参数传递机制

第 7 页

(4) 在计算过程中需要注意哪些特殊情况

2、给定以下两个函数原型声明: void sortl(int*, int*, int*); void sort2(int&,int&,int&);

void sort3(int,int,int); 并假设它们的功能都是把三个整数按升序排列。编写程序实现这三个函数,并且写一个测试程序调用它们,验证这三个函数的正确性。 思考并验证:

(1) 三个函数有何不同,应该如何调用?

(2) 以函数sort1(int*, int*, int*)为例说明指针传递参数的过程

(3) 给定10个整数,设计一种排序算法。(用一个C++函数实现)

第 8 页

3、重载一组Average( )函数,能求两个或三个整型或浮点型数据的平均值。 思考并验证:

(1) 重载函数有什么特点

(2) 写出你定义的重载函数原型

(3) 当重载函数使用默认参数时,需注意什么问题

nm!输入m和n的值,求c要求分m的值。c?n!(m?n)!使求组合数的函数能调用求阶乘的函

别定义求阶乘和求组合的函数,并且

4、求组合数公式为: ,编一程序,

nm数来实现。

5、(选做)使用递归函数,把任意一个正整数颠倒过来输出。例如,输入正整数678,输出应为876。

第 9 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验3 数组(6学时) 实验目的

(1) 掌握一维数组、二维数组和字符数组的概念和定义。 (2) 掌握数组元素的引用、赋值和输入/输出方法。

(3) 掌握使用循环结构控制数组元素的下标按规律变化、来处理一维数组元素和

二维数组元素的程序设计方法。

(4) 掌握字符数组的使用。 (5) 掌握指针的定义和使用方法 实验内容

1、随机函数产生10个互不相同的两位整数并存放到一维数组中,然后输出该一维数组,并把该数组中的素数输出。 思考并验证:

(1)如何产生限定范围的两位随机整数

(2)写出判断素数的算法

(3)数组很大时,循环判断素数并输出需要耗费大量的时间开销,你能否改进算法以尽量

减少循环次数

第 10 页

2、已知某个学习小组三门课程的成绩如下: 学生1 学生2 学生3 英语 85 65 75 高等数学 90 70 85 C++程序设计 80 75 77 使用二维数组存放该学习小组三门课程的成绩,计算每个学生的平均成绩和该小组每门课程的平均成绩。 思考并验证:

(1)如何定义二维数组,用什么方法给数组赋值?

(2)如何用指针实现

(3)设计一个算法实现对英语成绩的排序,使得成绩高的学生成绩放在数组的首位。

3、写一个函数,可以根据输入的参数值建立不同长度的动态数组,并置全部元素初始值为0。如果要求在已生成的动态数组上添加元素,以致需要扩充数组时,应该如何操作?请编程序试一试。

4.(选做)数据排序是为了快速查找。定义一个函数,在有序数组中查找指定值,想一想怎样才能找得更快。

第 11 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验4 指针的应用(15学时) 实验目的

(1) 掌握指针的用法

(2) 掌握单向链表的基本操作方法,包括建立和遍历链表,在链表中插入和删除节点。 实验内容

1、建立一个单向链表,该链表中每个节点是一个整型数,编写三个函数完成以下各项工作:

① 显示链表中每个节点数据;

② 输入一个整数i,在第i个节点之后插入一个节点,若i大于节点总数,则在链

表的尾部插入一个节点; ③ 输入某个整数,删除该相应节点。

思考并验证

(1)写出三个函数原型,并说明其功能

(2)采用动态内存分配方法,若不及时释放空间会出现什么情况

(3)你在调试本程序时常出现哪些问题,原因何在?

(4)总结在使用指针时应该注意哪些问题

2、分别把两个字符串存放到两个字符数组中,将其中一个字符串插入到另一个字符串的指定位置。要求用指针实现

第 12 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验5 类与对象(15学时) 实验目的

(1) 掌握类和对象的概念、定义和使用方法。

(2) 掌握不同特性对象成员的访问方法,以及this指针的概念和使用方法。 (3) 掌握构造函数和析构函数的使用方法。 (4) 掌握静态成员的使用方法。 (5) 掌握友员的使用方法。

学会使用VC6的Debug功能跟踪构造函数、析构函数和成员函数的执行顺序。 实验内容

1、定义一个score类,其中包括私有数据成员和公有成员函数,即 num 学号 Math 高等数学成绩 English 英语成绩 Programming 程序设计成绩

inscore( ) 输入学号和各科成绩,并且计算平均成绩 showscore( ) 输出学号和各科成绩

使用score类,输入某班n (事先不能确定)个学生的学号和各科成绩,然后求各个学生的平均成绩,并列表输出学生的学号、各科成绩和平均成绩。 思考并验证:

(1) 定义什么结构表示n个学生?

(2) 用什么方法输入n个学生的学号和成绩?

(3) 你的类中定义了几个构造函数,写出原型并说明其功能

第 13 页

(4) 在类中定义一个静态成员,用于表示类中所有对象的个数。当一个对象创建时,对象个数增1,当一个对象被撤销时,对象个数减1。说明如何定义静态成员,如何统计对象的个数。

2、 建立一个复数类imaginary,其私有数据成员x和y表示复数的实部和虚部,构造函数imaginary用于对复数的实部和虚部初始化,成员函数show用于显示复述对象,形式为“实部+虚部i”;友员函数add,sub,mul和div分别用于进行复数的加、减、乘和除法运算。在主函数中,实例化两个复数,并输入一个运算符,按运算符选择相应的友员函数进行复数运算,然后调用成员函数show输出计算结果。 思考并验证:

(1) 四个友员函数的形参和返回值分别是什么?

(2) 四个友员函数可以定义为相应的成员函数吗,写出原型

(3) 比较友员函数与成员函数的用法

第 14 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验6 运算符重载(9学时) 实验目的

(1)理解重载运算符的意义。

(2)掌握用成员函数、友员函数重载运算符的特点。 (3)掌握重载运算符函数的调用方法。 实验内容

1、建立一个二维数组类Douary,使该类中有以下数据成员、成员函数及友员函数。

构造函数:Douary(int m, int n);用于建立一维动态数组存放m行n列的二维数组元素,并对该数组的边界进行检查和将该数组元素初始化为0。

析构函数:~Douary();用于释放动态数组所占用的存储空间。 友员函数:friend istream &operator>>(istream &input, Douary &d); 重载运算符“>>”输入二维数组,基中d为Dousry类对象;

friend ostream &operator<<(ostream &output, Douary &d);

重载运算符“<<”以矩阵的形式输出二维数组,其中 d为Douary类对象。

私有数据成员:

int * Array; Array 为动态数组指针。 int row; row 为二维数组的行数。 int col; col 为二维数组的列数。

在主函数中,实例化一个二维数组,然后测试Douary类。 思考并验证:

(1) 二维数组类中的构造函数和析构函数是必须的吗?如果不定义构造函数和析构函数会出现什

么情况?

(2) 构造函数中对数组的边界检查包括哪些方面?

第 15 页

(3) 这两个操作符重载函数可以定义为类的成员函数吗,为什么?

2、为本实验第(1)题的Douary类增加重载运算符“+,-,”和“=”函数,以便实现两个矩阵相加、相减和赋值的运算。给定函数原型如下:

friena Douary &operator+(const Douary &d1,const Douary &d2); friena Douary &operator-(const Douary &d1,const Douary &d2); Douary &operator=(const Douary &d); 其中d1,d2和d为Douary类对象。

第 16 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验7 继承(12学时) 实验目的

(1) 掌握单继承和多继承的概念。

(2) 理解不同的继承类型:public(公有)、protected(保护)和private(私有),

掌握何时使用何种继承类型。

(3) 掌握类层次中构造函数的定义方式和建立对象时构造和析构次序。 (4) 根据问题建立合理的类层次体系。 实验内容

1、建立一个建筑物类的层次体系。其中building包括保护数据成员name(建筑物名称)、floors(层数)和areas(总面积),由building类派生住宅类house和办公楼类office;住宅类house包括私有数据成员rooms(房间数)和balcony(阳台数);办公楼类office包括私有数据成员offices(办公室数)和meetingrooms(会议室数)。住宅类house和办公楼类office都含有构选函数和print函数,以分别用于对数据成员的初始化和输出。在主函数中,实例化house类和office类对象并且将其数据输出。 思考并验证:

(1)画出此继承结构中类的层次关系图

(2) building类中的成员name、floors和areas为什么定义为保护成员,可以定义为私有成

员吗?

(3) 通过你的程序输出说明类层次中构造函数的特点及执行次序。

第 17 页

(4)通过你的程序输出说明类层次中析构函数的特点及执行次序。

2、设计图2.4所示的学校师生类层次结构。第一层“在校人员”类的数据成员包括姓名、性别、出生日期、出生地和身份证号码。

助教 图2.4 学校师生类体系

由“在校人员”类派生“学生类”和“教师类”。学生类的数据成员有学号、专业、班级和每周学时数。

教师类的数据成员有工作证号、职称、课程和每周课时。

助教类继承学生类和教师类,可以用学生类的全部数据成员,以及教师类的课程和每周课时数据成员。

每个类提供自定义的构造函数和析构函数,定义一组公有成员函数分别用于置各数据成员的值和返回数据成员的值。

建立类体系时,应仔细考虑各类的继承特性,成员的访问特性。请编写主函数测试这个类体系。

学生 教师 在校人员 第 18 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验8 虚函数与多态性(9学时) 实验目的

(1) 掌握动态联编的概念

(2) 掌握虚函数和纯虚函数的使用方法 实验内容

1、设计一个计算图形面积的类库。它的顶层是一个抽象类,并且提供了三个纯虚函数:显示数据成员。返回面积、返回体积。 class Shape{

virtual void showDate()=0; virtual double reArea()=0; virtual double reVolume()=0; };

第二层由Shape类派生TwoDimShape(二维图形)、ThreeShape(三维图形)类、他们增加了有关的数据成员,但没有成员函数的实现。第三层派生具体的图形类。TwoDimShape类派生Circle、Ellipse、Rectangle、Triangle等类。ThreeShape类派生Ball、Cylinder(圆柱体)、RectangularParallelepiped(长方体)等类。

在主函数测试中使用多态方式调用不同对象的求值函数。 思考并验证

(1) 程序中如何体现多态性

(2) 如果顶层类中的函数不定义为虚函数,执行程序会什么结果,为什么?

(3) 你是否定义了虚析构函数,虚析构函数有什么作用?

第 19 页

2、修改实验11中第(2)题的类定义,把第一层的“在校人员”类定义为抽象类,把print函数定义为纯虚函数,析构函数定义为虚函数。在测试程序中用指针分别创建学生、教师和助教三个对象,然后通过在校人员的基类指针调用不同版本的print函数,输出对象的有关数据。

第 20 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验9 文件(6学时) 实验目的

(1) 掌握流的概念

(2) 掌握文本文件和二进制文件的使用方法 实验内容

1、建立一个文本文件“textfile.txt”(内容由读者选定),然后显示该文件,并且统计该文件的行数和字符数。 思考并验证:

(1) 程序中应该定义输入流还是输出流,为什么?

(2) 您如何理解C++中流的概念

2、编写程序上机完成如下工作:

1建立一个存放图书信息的二进制文件“bookf.dat”,在该文件中,使每个记录包括图○

书编号、图书名、出版社、作者和价格。 2 浏览文件“bookkf.dat”○。

3用键盘输入某本图书的编号,在文件“bookf.dat”中查找该图书名、出版社、作者和○价格。

4 在文件“bookf.dat”的末尾添加新记录。 ○

5按给定编号删除相应的记录。 ○

要求分别编写函数来完成上述各项工作,并在main函数中使用菜单来选择某项功能。 思考并验证:

(1) 你在删除记录时考虑了哪些问题,是如何解决的?

第 21 页

(2) 若把新记录添加到文件的开头,你如何来实现,写出实现步骤?

(3) 浅谈编写该程序的体会。(您认为该程序的功能有何不足?了解数据库的概念吗?)

3、修改实验12的第(2)题,增加以下功能:

1 当新建一个学生、教师或助教对象时,可以键盘输入数据并且将其保存在文件中; ○

2 当删除对象时,对文件的记录添加删除标记; ○

3 当执行主函数时,把文件的数据导入一个异质链表中,以便于快速查找和修改。 ○

第 22 页

姓名 班级 学号 文件名:班级号_学号_姓名_题号.cpp(多文件应压缩为rar文件)

实验10 黑白子交换(选做) 实验内容:

编程实现以下的棋子移动过程: 有三个白子和三个黑子如下图布置: ○ ○ ○ . ● ● ● 游戏的目的是用最少的步数将上图中白子和黑子的位置进行交换: ● ● ● . ○ ○ ○ 游戏的规则是:(1)一次只能移动一个棋子; (2)棋子可以向空格中移动,也可以跳过一个对方的棋子进入空格,但不能向后跳,也不能跳过两个子。请用计算机实现上述游戏。 问题分析与算法设计指导

计算机解决这类问题的关键是要找出问题的规律,或者说是要制定一套计算机行动的规则。分析本题,先用人来解决问题,可总结出以下规则: (1) 黑子向左跳过白子落入空格,转(5) (2) 白子向右跳过黑子落入空格,转(5)

(3) 黑子向左移动一格落入空格(但不应产生棋子阻塞现象),转(5) (4) 白子向右移动一格落入空格(但不应产生棋子阻塞现萌),转(5) (5) 判断游戏是否结束,若没有结束,则转(1)继续。

所谓的“阻塞”现象就是:在移动棋子的过程中,两个尚未到位的同色棋子连接在一起,使棋盘中的其它棋子无法继续移动。例如按下列方法移动棋子: 原始布局 ○ 第一步: ○ ○ . ○ ● ● ● ○ ○ . ● ● ● 第二步:△ ○ ○ ● ○ . ● ● 第三步: ○

第 23 页 共 28 页

○ ● . ○ ● ● 第四步: 两个●连在一起产生阻塞 ○ ○ ● ● ○ . ● 或第四步:两个白○连在一起产生阻塞 ○ . ● ○ ○ ● ● 产生阻塞的现象的原因是在第2步(△状态)时,棋子○不能向右移动,只能将●向左移动。总结产生阻塞的原因,当棋盘出现“黑、白、空、黑”或“白、空、黑、白”状态时,不能向左或向右移动中间的棋子,只移动两边的棋子。

按照上述规则移动棋子,可以保证在移动棋子的过程中,不会出现棋子无法移动的现象,且可以用最少的步数完成白子和黑子的位置交换。

第 24 页 共 28 页

附录: 上机操作指导

一、熟悉Visual C++6.0编程环境

1、编辑新文件

(1)单击“开始”按钮,选择“程序”“|Microsoft Visual Studio 6.0”菜单项,单击“Microsoft

Visual c++6.0”,进入VC6开发环境的主窗口;

(2)单击VC6主窗口菜单栏中的“文件”菜单项;

(3)单击“文件”下拉菜单的“新建”菜单命令,屏幕出现“新建”对话框; (4)单击“文件”标签,系统弹出选项卡; (5)在“文件”选项卡中单击C++source File 选项;

(6)在“目录”文本框中输入或选择存放程序的文件夹和在“新建”对话框中的“文件”

文本框中输入文件名;

(7)在“新建”对话框中单击“确定”按钮,系统返回VC6主窗口,并打开文件编辑窗口; (8)在文件编辑区窗口中输入C++程序文件;

(9)在输入C++程序的过程中,用户可以使用一些编辑功能键对源程序文件进行编辑修改,

如Ins键、Del键和回退键等;

2.编辑旧文件

(1)单击VC6主窗口菜单栏中的“文件”菜单项,系统弹出下拉菜单; (2)单击下拉菜单的“打开”菜单项,屏幕出现“打开”对话框;

(3)在“打开”对话框中选择存放需要编辑文件的盘符和文件夹,找到该文件后双击文件名(或单击文件名后再单击“打开”按钮),系统在文件编辑区中打开该C++源程序文件:

(4)修改已经打开的文件;

(5)窗口工具栏上的“保存”按钮,把编辑修改过的源程序文件重新保存。 3.编译和链接

(1)VC6主窗口菜单栏中的“编译”菜单项,系统弹出下拉菜单;

(2)下拉菜单中的“编译”菜单命令或单击工具栏上的编译图标,屏幕出现“询问是否创建默认项目工作区”对话框;

(1)单击“是”按钮,屏幕出现“询问是否保存文件”对话框;

(2)单击“是(Y)”按钮,系统开始对源程序文件进行编译。若有语法错误,系统在输出区窗口中显示错误信息。双击条错误信息,文件编辑窗口中的左边出现一个箭头,指向出现错误的程序行。此时,根据错误信息修改程序。然后重新编译,一直到没有错误为止; (3)单击“编译|链接”菜单命令或单击工具栏上的“编译|链接”图标,对编译好的源

第 25 页 共 28 页

程序文件进行编译和链接。若发现编译或链接错误,根据错误信息进行修改,并且重新编译、链接,直到成功为止。 4、执行

(1)单击主窗口菜单栏中的“编译”菜单项。

(2) 单击下拉菜单中的“执行”菜单命令或单击工具栏上的执行图标”!”,系统开始执行目标代码文件。程序执行到键盘输入语句,系统会显示“输入数据和输出结果”窗口,等待用户输入数据。输入数据后,程序继续执行,执行输出语句时显示结果。

如果出现运行错误,应该分析错误的原因,例如,是输入数据错误,不是代码错误;如果需要修改源程序文件,不需重新编译、链接和执行。

(3)程序运行结束后,按任何一个键,系统返回VC6的集成开发环境窗口。 5、关闭系统工作区空间

单击“文件file|关闭工作区”菜单命令,关闭系统工作区空间。此时,可以从第2步开始输入调试下一个C++程序文件。 6、退出VC6开发环境

单击主窗口右上角的“关闭”按钮,退出VC6。

二、C++多文件应用程序的开发步骤

一个工程通常由多个文件组成,在vc6集成环境下建立多文件应用程序的操作步骤如下: 1.编辑项目文件

(1)选择vc6主窗口菜单栏中的“文件”菜单项; (2)单击下拉菜单的“新建”菜单命令; (3)在“新建”对话框中选择“工程”标签;

(4)在“工程”选项卡中单击Win32 Console Application选项,这时在系统“新建”对话

框的目标平台框上显示Win32;

(5)在“新建”对话框的工程文本框中输入项目文件名,在“位置”文本框中输入或选择

存放新项目的文件夹;

(6)在“新建”对话框中单击确定按钮,系统显示“win32 Console Application step 1 of 1”

对话框,如下所示:

第 26 页 共 28 页

单击“An empty project”按钮和“完成”按钮,显示新建工程信息,单击“确定”后系统返回主窗口;

(7)输入新项目中的文件

a) 单击VC6主窗口菜单栏中的“文件”菜单项。

b)单击“文件”下拉菜单的“新建”菜单命令,屏幕出现“新建”对话框。 c)单击“文件”标签,系统弹出选项卡。

d)选择C++source File 选项或C/C++ Header File选项。 e)在“新建”对话框中的“文件”文本框中输入文件名。 f)在文件编辑区窗口中输入C++程序文件或头文件。 重复上述步骤,知道所有文件输入完为止。

三、调试程序

vc6在菜单项“编译|开始调试”下提供了调试程序的工具,下面介绍几个主要的调试功能。

1.Step Into(单步执行程序):选择菜单“编译|开始调试|step Into”命令或按下功能键F11。

逐个执行语句,当调用函数时,进入该函数体内逐个语句执行

2.Step Over(单步执行程序)选择菜单“编译|开始调试|Step Over”命令或按下功能键F10。

逐个执行语句,当调用函数时,不进入该函数体内。 3.设置断点

所谓断点就是程序运行时需要暂时停止执行的语句。程序员可以为程序需要观察的语句设置断点,以“单步执行”的方式跟踪和检察程序当前的各种状态值。

在C++程序文件中设置断点,以“单步执行”的方式跟踪程序执行的过程和检查变量的值的操作步骤为如下六点。

(1)在主窗口中打开文件并且对该文件进行编译链接;

(2)把光标移到需要设置断点的语句处。单击鼠标右键,弹出关联菜单。注意,断点语

第 27 页 共 28 页

句应该是有变量的语句;

(3)单击“Insert /Remove Breakpoint”菜单命令,在断点语句左边空白处出现一个褐色的圆点。再选择一次为取消断点;工具栏上也有设置断点的快捷键(带手掌的图标)。单击一次为设置断点, 再击一次为取消断点。可以在程序中设置多个断点。

(4)单击“编译|开始调试”菜单命令或按F5功能键,系统开始执行程序,或者按F10(F11)单步执行程序。执行到语句“cin>>n”时,用户需输入n的值。执行到断点语句,程序的执行进入调试状态,在主窗口底部自动弹出显示变量窗口,显示已经输入的变量和断点出现的变量的值;此时,可以用Alt+3,Alt+4,Alt+7组合键打开各个调试窗口,查看当前程序执行的情况。在程序调试状态,当鼠标进入程序的某个标识符时,系统将显示该对象的简要信息。例如,函数的地址及原型:变量、常量的当前值,还可以显示被选取的表达式的值。

(5)若停止调试程序,可以使用Debug菜单的“Stop Debugging”命令,或者单击调试工具栏的快捷键(第二个图标),系统停止程序调试。

第 28 页 共 28 页

本文来源:https://www.bwwdw.com/article/73fg.html

Top