实验2——面向对象程序设计

上传人:ni****g 文档编号:510636771 上传时间:2023-12-14 格式:DOCX 页数:6 大小:13.62KB
返回 下载 相关 举报
实验2——面向对象程序设计_第1页
第1页 / 共6页
实验2——面向对象程序设计_第2页
第2页 / 共6页
实验2——面向对象程序设计_第3页
第3页 / 共6页
实验2——面向对象程序设计_第4页
第4页 / 共6页
实验2——面向对象程序设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《实验2——面向对象程序设计》由会员分享,可在线阅读,更多相关《实验2——面向对象程序设计(6页珍藏版)》请在金锄头文库上搜索。

1、实验2数组、指针和结构体(2学时)1. 一、实验目的1. 掌握一维数组和二维数组的定义和使用方法。2. 掌握指针变量的定义和使用方法。3. 掌握结构体类型的定义和结构体变量的使用方法。4. 学习使用VC+编程环境提供的程序的单步调试功能。1. 二、实验任务1. 编写程序,创建一个包含10个元素的整型数组,在程序运行时由用户从键盘输入数组元素 的值。然后使用选择排序法对数组元素按从小到大的顺序进行排序。选择排序法的算法思路 是:对包含n个元素的数组进行排序时,首先通过比较,选择出数组中最大的元素,将它和 数组末尾的元素(如果数组元素下标从0开始,则是第n-1个元素;如果数组元素下标从1 开始,则

2、是第n个元素)相交换,也就是说,要把最大的元素选择出来并放到整个数组的末 尾;然后重复上述的选择过程,从前n-1个元素中找出最大的元素,并把它放到前n-1个元 素的末尾;这样的选择过程重复进行应n-1次,每次选择都找出一个最大的元素放到未排序 列的末尾。这样数组就成为了一个按从小到达顺序排列的有序数组。要求分两行输出排序前 和排序后的数组。2. 编写程序,创建一个4行4列的二维整型数组,按行序优先将1到16的整数值存放在该数 组中。按矩阵的形式在屏幕上输出该数组。计算并输出数组主对角线元素的和;然后将该矩 阵转置,并将转置后的矩阵存放在原来的二维数组中。所谓转置就是将由主对角线分割的上 三角矩

3、阵中的元素与下三角矩阵中的相应元素互换。3. 编写程序,定义2个整型指针,并使它们指向2个整形变量,利用指针分别输出两个变量的 值和它们的内存地址;使用指针交换两个变量的值,再次输出变量的值和它们的内存地址; 交换两个指针的值,观察程序的运行结果4. 编写程序,动态创建一个字符数组,从键盘输入一个字符串并把它保存到字符数组中。找出 字符串中所有的小写字母字符,将它们转换成相应的大写字母字符,输出转换后的字符串。 要求使用字符指针操作字符数组。5. 编写程序,定义一个表示学生考试成绩信息的结构数据类型,在程序运行过程中,根据用户 输入的学生数目,动态创建一个这种结构数据类型的变量数组,并从键盘输

4、入每个学生的相 关信息,然后根据某门课程的成绩,按从大到小的顺序对该数组中的元素进行排序。分别输 出排序前的数组内容和排序后的数组内容。6. 学习VC+IDE提供的程序单步调试技术。1.三、实验步骤1.设计VC+控制台应用程序exp2_1,按照任务1的要求创建一个包含10个元素的整型数组, 并从键盘输入10个整数:int array10;for(int k=0; karrayk;2. 下面的二重循环对数组进行选择排序:for(int i=9; i0; i-)int max=arrayi;intmaxindex=i;for(int j=i-1; j=0;j-)if(maxarrayj)max=a

5、rrayj; maxindex=j;if(maxindex!=i) arraymaxindex=arrayi; arrayi=max; 上边程序段中的外层for循环控制选择的次数,排序包含n个元素的数组需要n-1次选择。内层for 循环在每次选择的过程中查找最大的元素。3. 设计一个VC+控制台应用程序exp2_2,实现任务2的要求。用二维数组存放的矩阵,其主 对角线元素的行下标和列下标相等。若假设所定义的整型二维数组为matrix,则可使用下面 的程序来求出主对角线元素的和。int sum=0;for(i=0;i4;i+)for(j=0;j4;j+)if(i=j)sum+=matrixij;

6、4. 将矩阵转置时,应把上三角阵的元素matrixij和下三角阵的对应元素matrixji互换。上 三角阵元素的行坐标小于列坐标。请同学们判断下面的程序段能否正确地实现矩阵转置?如 果有错误,请改正。for(i=0;i4;i+)for(j=0;j4;j+) int temp=matrixij;matrixij=matrixji;matrixji=temp;5. 编写VC+控制台程序exp2_3实现任务3所要求的功能,程序代码如下。观察程序的执行 结果,理解指针变量的本质属性。#includeusing namespace std;void main()inti,j,*ptr1,*ptr2;pt

7、r1=&i;ptr2=&j;*ptr1=10;*ptr2=20;cout整型变量 i 的值是*ptr1endl;cout整型变量i的地址是ptr1endl;cout整型变量 j 的值是*ptr2endl;cout整型变量j的地址是ptr2endl;int temp=*ptr1;*ptr1=*ptr2;*ptr2=temp;cout整型变量 i 的值是*ptr1endl;cout整型变量i的地址是ptr1endl;cout整型变量 j 的值是*ptr2endl;cout整型变量j的地址是ptr2endl;int *ptr3=ptr1;ptr1=ptr2;ptr2=ptr3;cout整型变量 i

8、的值是*ptr1endl;cout整型变量i的地址是ptr1endl;cout整型变量 j 的值是*ptr2endl;cout整型变量j的地址是ptr2strp;执行上面的语句,如果用户从键盘输入的字符串是“Hello”,则编译器会自动将字符数组strp 中的元素strp5赋值为空字符0,使得字符数组strp可以表示一个字符串。需要注意,如同上面第二条语句,使用标准输入流对象cin直接从键盘输入的字符串不包含空 格,因为空格符和换行符都是字符串输入的结束标志。也就是说,如果输入的字符串中要包 含空格,则不能使用上述的输入方式。输入流类istream的成员函数getline可以用来输入包 含空格

9、的字符串。关于getline函数的使用方法将在后面的实验中介绍。有兴趣的同学可以 先做尝试。另外任务4的另一个主要目的是让同学们复习数组的动态创建技术和使用指针操 作数组的编程技术。8. 创建VC+控制台程序exp2_5,首先创建结构体类型Studentinfo表示学生信息,其中包含 学生姓名,学号,年龄,性别(可以用一个字符来表示),和某门课程的成绩。如下所示:structStudentinfochar name20;intnum;int age;char sex;int score;;根据任务5的要求,创建一个Studentinfo结构体类型的变量数组保存一组学生的相关信息, 并从键盘依次

10、输入每个学生的信息,然后根据学生的成绩,以从大到小的顺序对数组元素进 行排序,要求输出排序前后的数组内容。9. 以下完成任务6的要求,学习VC+ IDE的程序调试功能。源程序中主要存在两种类型的错 误:语法错误和逻辑错误。语法错误是指程序结构和语句中存在违背C+语法规则的错误,例如 遗漏了语句之间的分号、标识符中出现了非法字符或使用了未定义的标识符等等。存在语法 错误的源程序是无法通过编译的,C+编译器在编译源程序时,会识别其中全部的语法错误, 并向程序员反馈相关的错误信息,程序员可以通过分析这些错误信息,找到出错的原因和出 错的位置并对错误进行修改,然后再次编译源程序。不存在任何语法错误的源

11、程序才能通过 编译,从而生成由机器码组成的目标文件。逻辑错误是指程序的语义逻辑中存在错误,存在 逻辑错误的源程序虽然可以通过编译并生成可运行的目标程序,但程序的运行结果却是错误 的,或者是在程序的运行过程中出现实时异常。编译器无法识别程序中逻辑错误,对于规模 很小的程序,可以通过分析程序结构,找出可能存在错误的部分,并逐条检查其中的每条语 句以发现其中存在的错误。但是,对于规模较大的程序,使用这种方法寻找逻辑错误是效率 低下和不切合实际的。在这种情况下,可以使用各种调试技术对程序进行调试,以发现出错 的原因。所谓调试是指寻找和排除程神存在呻错鲫途径方法。大多数的C+程序开发环境都 为编程者提供

12、了完备的调试工具。下面将介绍VC+开发环境为程序员提供的部分调试技术。10. 参考下面简单的程序,学习程序的单步执行功能。#includeusing namespace std;void main()intsum,i;sum=0;for(i=1;i=10;i+)sum+=i;coutsumendl;上面的程序计算并输出正整数1到10的和。11.现在我们来学习VC+ IDE的单步调试技术。创建VC+控制台应用程序exp2_6,为程序添 加源文件exp2_6.cpp,并向该文件输入将上面的程序。如图2.1所示。图2.112. 如图2.1所示,语句sum=0;是程序的第一条执行语句,用鼠标单击该语句

13、的左侧将光标定位 到这条语句处。选择菜单命令“Build”fStartDebug”fRun to Cursor ”,或者使用快 捷键Ctrl+F10”进入单步调试状态。如图2.2所示。图2.213. 如图2.2所示,进入单步调试状态后,会弹出一个悬浮的“Debug”菜单,在包含程序的工 作区的下面有两个窗体,左边的是Variables窗体,其中显示正在执行的函数中的变量信息, 包括变量名和变量值。右边的是Watch窗体,它也可以在调试时查看程序中的变量或对象 的值,并可以在该窗体中修改这些值。程序左边的小箭头指向将要执行的语句。14. 点击“Debug”窗体中的快捷按扭或直接按快捷键F10,开始程序的单步执行,在单步执行 过程中,没按一次快捷按钮或快捷键,程序就向前执行1条语句。小箭头始终指向当前将要 执行的语句。当执行程序中的循环时,可以看到,小箭头也在循环体中上下移动。15. 在单步执行的过程中,可以从左下的变量窗体中查看到变量的当前值。如图2.3所示。程序 正在执行循环体语句,当前循环控制变量i的值为2,而保存累加和的变量sum的值为3。图2.316. 也可以通过“Watch”窗体来观察和改变变量的值,方法是,在“Watch”窗体中的“Name 栏中点击鼠标左键获取光标,从键盘输入想要查看的变量名,然后点击回车键,该变量的值 就会出项在右边同一行的“V

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号