网站大量收购独家精品文档,联系QQ:2885784924

第7次实验内容(数组与指针).ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7次实验内容(数组与指针)

该实验内容依据教材: C语言程序设计实验教程 邹显春、王建国主编 高等教育出版社 * * 制作人:邹显春 E-Mail:zouxc@swu.edu.cn 掌握C语言程序设计的诀窍---重在上机实践!!!!!! 目标:熟练阅读、编写程序 实验7 数组与指针 (P35) 说明:参考程序代码放在备注中,仅供大家对照检查,希望同学们本着对自己负责的精神,先独立完成,再看参考答案 一、实验目的 1.熟练掌握二维数组的使用方法 2.掌握指针数组的使用方法 3.了解动态数组空间的开辟、使用和释放的过程 4.掌握字符指针的使用方法 二、实验内容(P36) 2.设计性实验—①、②、③、⑤选择其中1个完成, ④为选做。 温馨提示 1.验证性实验—①、②,按要求进行实验,所需要程序代码在网络平台的“课程导学”的“实验引导”中下载。 三、实验内容示范 1.验证性实验 ①程序填空,步骤: 先按照实验1的操作步骤进入VC++的源程序编辑区,再从“平台”上提供的代码文件test2_18.cpp中取代码,粘贴到编辑区中 目的:掌握指针在数组中使用的方法 通过本填空题,明白引用数组元素的方法除下标法外,也可以使用指针法,即通过指向数组元素的指针找到所需的元素,指针法能够使目标程序占用内存更少,运行速度更快 请按照要求完善程序,以确保其中运行结果满足题意要求。 提示:在定义数组a[ ]时,a实际上就是指向该数组第一个元素的一个常量指针(本身a不能做任何运算),通过将该指针地址赋值给指针p后,通过p的不断增加,即获得数组依次各元素的地址,但注意取元素时,要用到指针运算符* 结果:1+2+3+……+10=55 检查程序结果是否正确,尤其注意指针指向的位置是否合理(是一个定义过的位置,切不可使用指向未知区域的指针) 参考代码在备注中 ② 程序改错: 从“平台”上提供的代码文件test2_19.cpp中取代码,粘贴到编辑区中 实验目的:明白指针变量本身的内容和指向具体变量值的区别 编译上述代码,根据编译错误,修改程序,无错后进一步进行调试操作 温馨提示:理解指针变量本身实际上是装载变量的容器的编号,错误的关键在于何时应该使用指针变量本身,何时需要使用指针变量指向的具体变量值 修改后的参考程序代码见备注 2.设计性实验—①、②、③、⑤选择其中1个完成,④为选做 ①从键盘上任意输入10个整数存放在一维数组中,并将数组内容倒置后输出。要求用一维数组的指针实现 温馨提示:一维数组的指针操作可参考验证性实验的填空题和改错题,倒置的操作实际上就是数组首尾的两两交换,注意这个交换过程只需要走到数组的一半即可—参考代码见备注 ②编写一个程序,求出一个4行4列的二维数组的主对角线之和并输出。要求用二维数组的指针来实现 温馨提示:要让指针指向二维数组a[4][4],则应当把a[0] a[1] a[2] a[3]的值赋给指针变量,设置变量i来控制二维数组的行,内循环中判断p减去首地址a[i](差为列坐标)是否就是行i,这样即可判断该元素是否位于主对角线上,再用一个累加变量收集,最终得到对角线之和 ③编写一个程序,实现两个字符串的复制、比较、连接功能。要求:用指针对字符串操作,并且在实现字符串的复制、比较、连接功能时,不允许调用库函数;在输入和输出字符串时,要有输入、输出提示信息 温馨提示:基本思路同前次设计性实验部分的⑥,只是在字符串数组中的操作过程时,引用数组下标改为使用指针实现 ⑤从键盘上输入10个字符串,对这些字符串按照升序排列。要求用指针数组来实现 温馨提示:基本思路同前次设计性实验部分的②,输入10个字符串时,使用指针数组指向它们,引用字符串下标时,采用指针的方式完成 (选作)④编写程序,用动态数组实现将n个学生某课程的成绩存放在数组中,并计算其平均成绩。班级人数通过键盘输入。要求输出所有学生成绩和平均成绩,且有输入输出提示 温馨提示:动态数组指的是数组的大小初始并不确定,在程序运行的过程中动态的开辟生成,实现的方法要用到calloc(或malloc)函数,并用一个指针指向这个空间;注意在使用完毕后,程序本身不会对动态开辟的空间进行清理工作,所以一定要使用free函数将空间释放。 另,如果在C++环境中,可使用new和delete运算符进行空间的动态开辟 本题的算法思路略 本题的运行结果: #includestdio.h void main() { int a[10]; int *p; int temp; printf(请输入10个整数(用空格隔开):\n); for(p=a;pa+10;p++) scanf(%d,p); for(p=a;p(a+10/2);p++) //循环只需要进行到数组中的一半即可,这时已经完成整个前后交换了

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档