c语言第八章实验报告书4.doc
《c语言第八章实验报告书4.doc》由会员分享,可在线阅读,更多相关《c语言第八章实验报告书4.doc(12页珍藏版)》请在装配图网上搜索。
C语言程序设计 实验报告书 专 业: 班 级: 姓 名: 学 号: 实验地点: 任课教师: 实验题目: 实验环境: Visual C++6.0 一、 实验目的 1.了解什么是指针,什么是指针变量,并学会通过指针变量访问整型变量; 2.学会用指针方法来处理问题,学会定义指针变量; 3.学会将指针类型和函数结合在一起,用的数据作函数的参数; 4.学会在函数中通过改变形参(指针变量)的值,来改变实参(指针变量)的值; 5.学会在函数中通过改变形参(指针变量)的值,来改变实参(指针变量)的值,并且调用函数来实现该程序; 6.了解引用数组中各个元素共有三种方法:(1)下标法(2)通过数组名计算数组元素的地址。找出元素的值(3)用指针变量指向数组元素; 7.学会用指针变量指向数组元素,通过改变指针变量的值,是指针变量先后指向数组中的各个元素; 8.学会定义一个函数实现交换,知道实参用数组名a,形参可用数组名,也可用指针变量名; 9.学会用指针变量作实参; 10.学会用指针方法实现程序; 11.清楚地区别各个符号所代表的是地址还是值,了解有关概念; 12.学会用指向数组元素的指针变量; 13.学会用指向一维数组的指针变量; 14.了解用指针变量作形参可以有两种方法:(1)用指向变量的指针变量(2)用指向一维数组的指针变量; 15.了解用指针变量作形参可以有两种方法:(1)用指向变量的指针变量(2)用指向一维数组的指针变量; 16.学会字符串的定义方式,可以通过定义字符数组来实现; 17.学会通过字符指针变量来输出一个字符串; 18.知道对字符串中字符的存取,既可以用下标的方法,也可以用指针方法; 19.知道对字符串中字符的存取,既可以用下标的方法,也可以用指针方法; 20.学会通过调用函数来实现字符串的复制; 21.学会改变指针变量的值; 22.学会用函数指针变量来调用函数; 23.知道怎样使用指向函数的指针变量; 24.学会使用指向函数的指针变量; 25.知道怎样使用返回指针的函数; 26.知道怎样使用返回指针的函数; 27.知道什么是指针数组,学会定义和使用指针数组; 28.学会使用指向指针数据的指针变量; 29.学会使用指向指针数据的指针变量 30.学会怎样用malloc函数来建立动态数组; 二、 实验内容 1.通过指针变量访问整型变量; 2.输入a和b两个整数,按先大后小的顺序输出a和b; 3.输入a和b两个整数,按先大后小的顺序输出a和b,现用函数处理,而且用指针类型作函数参数; 4.对输入的两个整数按大小顺序输出; 5.输入三个整数a,b,c,要求按从大到小的顺序将它们输出,要求用函数实现; 6.有一个整型数组a,有10个元素,要求输出数组中的全部元素; 7.通过指针变量输出数组a中的10个元素; 8.将数组a中的n个整数按相反顺序存放; 9. 将数组a中的n个整数按相反顺序,用指针变量做实参; 10.用指针方法对10个整数按由大到小顺序排序; 11.输出二维数组的有关数据(地址和值); 12.有一个3*4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值; 13.输出二维数组任一行任一列元素的值; 14.有一个班,3个学生,各学四门课,计算总平均分数以及第n个学生的成绩; 15.在上一题的基础上,查找一门以上课程不及格的学生,输出他们的全部课程的成绩; 16.定义一个字符数组,在其中存放字符串“I love China!”,输出该字符串和第8个字符; 17.通过字符指针变量输出一个字符串; 18.将字符串a复制为字符串b,然后输出字符串b; 19.用指针变量来处理上一例题; 20.用函数调用实现字符串的复制; 21.改变指针变量的值; 22.用函数求整数a和整数b中的较大者; 23.输入两个整数,然后让用户选择1或2,选1时调用max函数,输出其中的大数,选2时调用min函数,输出其中的小数; 24.有两个整数a和b,由用户输入1,2或3。如输入1,程序就给出a和b中大者,输入2,就给出a和b中的小者,输入3,则求a与b之和; 25.有a个学生,每个学生有b门课 的成绩,要求用户在输入学生的序号之后,能输出该学生的全部成绩,用函数指针来实现; 26.对上一例题中的学生,找出其中有不及格的课程的学生及其学号; 27.将若干字符串按字母顺序(由小到大)输出; 28.使用指向指针数据的指针变量; 29.有一个指针数组,其元素分别指向一个整形型数组的元素,用指向指针数据的指针变量,输出整型数组个元素的值; 30.建立动态数组,输入5个学生的成绩,另外用一个函数检查其中有无低于60分的,输出不合格的成绩; 三、 实验结果 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 四、 实验中存在的问题及解决办法 1.在开头处定义了两个指针变量,但是他们没有指向任何变量,程序的后面才规定了这两个指针变量指向哪两个变量,此时pointer_1的值为&a,pointer_2的值为&b; 2.用指针方法处理这个问题,要注意的是:本题中,没有交换整型变量的值,而是交换两个指针变量的值,即p1和p2是指向交换了一下; 3.函数的参数不仅可以是整型或是浮点类型的,还可以是指针类型的,它的作用是经一个变量的地址传送到另一个函数中; 4.此题目的函数中,改变的是形参(指针变量)的值,通过此方法来改变实参的值; 5.再次强调:C语言中实参变量和形参变量之间的数据传递是单向的“值传递”方式,所以用指针改变函数参数时同样也要遵循这一规则,注意:不可能通过执行调用函数来改变实参指针变量的值,但是可以通过改变实参指针变量所指变量的值; 6.可以有三种方法应用数组中的各元素:(1)下标法(2)通过数组名计算数组元素的地址。找出元素的值(3)用指针变量指向数组元素;特别注意不要混淆; 7.这个程序中,问题在于指针变量p的指向。首先,指针变量p的初始值为a数组首元素的地址,但是经过第一个for循环读入数据以后,p已指向a数组的末尾。因此在执行第二个for循环时,p的起始值不是&[0]了,而是a+10,由于执行第二个for循环时,每次要执行p++,因此p指向的是a数组下面的10个存储单元,而这些存储单元是不可预料的,因此程序运行的时候出了错; 8.注意:实参用数组名a,形参可用数组名,也可用指针变量名; 9.在输入arr数组的元素以后,要对指针变量p进行重新指向,由于p的值已经改变,如果不重新指向arr[0],下一个for循环中,p的起始值不是0了,而是代表p+10以后的数组,程序运行的时候就会出现错误; 10.定义int*型指针变量p指向a[0],定义sort函数使数组a中的元素按由大到小的顺序排列,在主函数中调用sort函数,用指针变量p作实参,sort函数的形参用数组名,用选择排序法来实现该程序; 11.这个程序中区别了几个重要的符号,要注意区分什么是地址,什么是地址中的值; 12.二维数组的元素是整型的,他相当于整型变量,可以用int*型指针变量指向它,二维数组的元素在内存中是按行顺序存放的,即存放完序号为0的行中的全部元素后,接着存放序号为1的行中的全部元素,以此类推。因为可以用一个指向整型元素的指针变量,依次指向各元素; 13.int(*p)[4]表示定义p为一个指针变量,它指向包含4个整型元素的一堆数组。注意*p两侧的括号必不可少,如果写成*p[4],由于方括号[]运算级别高,因此p先于[4]结合,p[4]是定义数组的形式,然后再与前面的*结合,*p[4]就是指针数组,这两者有本质上的区别,要注意区别,在写程序的时候不要出错; 14.程序中,把score[0][0]的地址传给p,使p指向score[0][0],然后再average函数中,使p先后指向二维数组的各个元素,p每增加1就改为指向score数组的下一个元素,形参n代表需要求平均值的元素的个数;p_end代表的是最后一个元素的地址; 15.该程序中,实参score和形参p的类型是相同的,在调用search函数时,p得到实参score的值,即score[0]的起始地址,也就是说p指向score数组的第一行,然后p先后指向各行; 16.用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明%s输出该字符串;注意:由于在初始化时字符的个数是确定的,因此可以不必指定数组的长度,用数组名string和输出格式%s可以输出整个字符串; 17.对字符指针变量的初始化,实际上是把字符串第一个元素的地址(即存放字符串的字符数组的首元素地址)赋给指针变量string,使string指向字符串的第一个字符; 18.该程序中,可以通过地址访问其数组的元素; 19.由于可以用指针变量访问字符串,因此可以通过改变指针变量的值使它指向字符串中的不同字符;定义两个指针变量,改变指针变量的值,使它们顺序指向数组中的各元素,进行对应元素的复制; 20.可以定义一个函数copy_string用来实现字符串的复制功能,在主函数中调用此函数,函数的形参和实参可以分别用字符数组名或字符指针变量; 21.指针变量a的值是可以变化的,printf函数输出字符串时,从指针变量a当时所指向的元素开始,逐个输出各个字符,知道遇到‘\0’为止,而数组名虽然代表地址,但它是常量,它的值是不能改变的,这点要注意; 22.可以定义一个指向函数的指针变量,用来存放某一函数的起始地址; 23.在程序中,调用函数的语句是“c=(*p)(a,b)”,这样使用了指向函数的指针变量; 24.在该程序中,只用到了f1和f2函数,完全可以在fun函数中直接调用这两个函数,不用定义指针变量,但是如果在每次调用fun函数时,要调用的函数时不固定的,这时,使用指针变量就比较方便了。只要在每次调用fun函数的时候给出不同的函数名作为实参即可,fun函数不必做任何修改;这是一种符合结构化程序设计方法原则的方法,要注意掌握; 25.该函数的返回值是&score[k][0](即存放序号为k的学生序号为0的课程的数组元素的地址),然后在主函数中输出该生的全部成绩; 26.在该程序中,main函数不止调用一次search函数,在search函数中检查3个学生有无不及格的课程,如果有,就返回该学生的0号课程的地址&score[i][0],否则返回NULL; 27.该程序中要注意的是:用选择法排序,但是不移动字符串,而是改变指针数组的各元素指向; 28.定义一个指针数组name,并对它初始化,使name数组中每一个元素分别指向5个字符串,定义一个指针型数据的指针变量p,使p先后指向name数组中各个 29.注意:指针数组的元素只能存放地址,不能存放整数; 30.用malloc函数开辟一个动态自由区域,用来存5个学生的成绩,会得到这个动态区域第一个字节的地址,它的基类型是void型,用一个基类型为int的指针变量p来指向动态数组的各元素,并输出它们的值,但要注意:必须先把malloc函数返回的void指针转换为整型指针,然后赋给p1;- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 第八 实验 报告书

链接地址:https://www.zhuangpeitu.com/p-7971887.html