1 / 6
文档名称:

数据结构与算法设计-实验1-学生版-gsc.pdf

格式:pdf   大小:455KB   页数:6页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构与算法设计-实验1-学生版-gsc.pdf

上传人:1781111**** 2024/5/11 文件大小:455 KB

下载得到文件列表

数据结构与算法设计-实验1-学生版-gsc.pdf

相关文档

文档介绍

文档介绍:该【数据结构与算法设计-实验1-学生版-gsc 】是由【1781111****】上传分享,文档一共【6】页,该文档可以免费在线阅读,需要了解更多关于【数据结构与算法设计-实验1-学生版-gsc 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..构与算法设计》姓名唐予灵实验日期实验成绩班级电A1312学号09实验名称实验一指针教师签字一、实验目的1、掌握指针的概念,会定义和使用指针变量。2、学会正确使用数组的指针和指向数组的指针变量,进一步加强对指针概念的理解。3、学会正确使用字符串的指针和指向字符串的指针变量。4、学****使用指向函数的指针变量。5、能够较熟练地运用指针来实现对字符、数组以及函数的综合性操作。二、实验原理指针是C语言的重要数据类型,也是C语言的精华所在。利用指针可以有效地表示复杂的数据结构,实现动态内存分配,更方便、灵活地使用数组、字符串及实现为函数间各类数据的传递提供简洁便利的方法。正确灵活地运用指针,可以编制出简练紧凑、功能强大而执行效率高的程序。在C语言中,用指针来表示一个变量指向另一个变量的指向关系,所谓指针即地址。一个变量的指针即该变量的地址。专门存放地址的变量,称为指针变量。1、指针变量的定义及初始化[存储类型]数据类型标识符*指针变量名=初始地址值;如:int*p1,*p2=&i;注意:指针变量名是p1,p2,不是*p1,*p2;指针变量只能指向定义时所规定类型的变量,如p1只能指向int型变量;指针变量定义后,变量值不确定,应用前必须先赋值,p2在定义时直接赋初始值,指向变量i。2、指针与函数指针作为函数参数,有两种情况:函数形参为指针变量,指针变量作实参;函数形参为指针变量,变量地址作为实参。指针变量的值遵循单向传递的原则,如果在函数中进行对形参指针的交换将不能影响到实参的改变。指针函数是指函数的返回值为指针的函数。指针函数的返回值一定要是地址,并且返回值的类型要与函数类型一致。指针函数的定义:?类型名*函数名(参数表列)例如:int*fun(inta,intb){函数体语句}指向函数的指针,即一个指针变量,其值等于某一个函数的入口地址,则称该指针指向这个函数,这样通过这个指针变量也可以调用这个函数。指向函数的指针变量的定义:?数据类型(*指针变量名)()如:int(*p)();注意int(*p)();与int*p();的差别。定义指向函数的指针和指针函数时,格式不能写错。3、指针与数组数组名是一个常量指针,它的值为该数组的首地址。根据指针的概念,数组的指针是指数组的起始地址,而数组元素的指针,是各元素的地址。像指针变量可以指向各基本类型变:..型变量的指针的定义方法相同。如:[5]={1,3,5,7,9};int*p;p=&a[2];(把数组元素a[2]的地址赋给指针变量p)p=a;(把数组的首地址赋给指针变量p)通过指针引用数组元素:*p=5;表示对p当前所指的数组元素赋以一个值5。C规定:p+1指向数组的下一元素(而不是将p值简单地加1)。p+1意味着使p的原值(地址)加d个字节(d为一个数组元素所占的字节数)。如果p的初值为&a[0],则:p+i和a+i就是a[i]的地址,或者说它们指向a数组的第i个元素;*(p+i)或*(a+i)是p+i或a+i所指向的数组元素,即a[i];指向数组的指针变量也可以带下标,如p[i]与*(p+i)、a[i]等价。4、指针与字符串字符串保存在字符数组中。指向字符串的指针称字符指针,其定义形式为:指针名;对字符串的操作,还可以用数组元素的指针表示法或地址法来实现。三、实验内容1、下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。例如,若输入8名学生的成绩:,60,72,,98,,88,64,则低于平均分的学生人数为4()。请编写程序实现。实验代码:#include<>#include<>#defineN20intfun(float*s,intn,float*aver){floatave,t=;intcount=0,k,i;for(k=0;k<n;k++)t+=s[k];ave=t/n;for(i=0;i<n;i++)if(s[i]<ave)count++;*aver=ave; returncount}main(){floats[30],aver;intm,i;:..for(i=0;i<m;i++)}实验结论:指针可以编制出简练紧凑、功能强大而执行效率高的程序。……2、下列给定程序中,函数fun的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放在c数组中,形成一个新的字符串,例如:若串a中的字符串为aBCDeFgH,串b中的字符串为ABcd,则c中的字符串为:aBcdeFgH。实验代码:#include<>#include<>voidfun(char*p,char*q,char*c){}main(){charfun(a,b,c);puts(a);:..puts(b);puts(c);}实验结论:……3、下列给定程序中函数fun的功能是:求出在字符串s最后一次出现的子字符串t的地址,通过函数值返回,在主函数中输出从此地址开始的字符串,若未找到,则函数值为NULL。如:当字符串s中的内容为abcdafabcdx,t中的内容为ab时,输出结果应是:abcdx。当字符串中的内容为abcdabfabcdx,t中的内容为abd时,则程序输出未找到信息:notbefound!。实验代码:#include<>#include<>#include<>char*fun(char*s,char*t){}main(){chars[100],t[100],*p;p=fun(s,t);if(p)else}运行结果:4、请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下:..主函数中是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。实验代码:#include<>#include<>#include<>voidfun(inta[],intn,int*max,int*d){for(i=0,*max=0,*d=0;i<n;i++){if(a[i]>*max)*max=a[i],*d=i+1;};}main(){inti,x[20],max,index,n=10;for(i=0;i<n;i++){x[i]=rand()%50;}fun(x,n,&max,&index);}运行结果:实验结论:使用指针可以较好的进行数据的查找与比较。……四、实验报告通过分析实验结果可知::..用数组、字符串及实现为函数间各类数据的传递提供简洁便利的方法。正确灵活地运用指针,可以编制出简练紧凑、功能强大而执行效率高的程序。……