实的验7 指针.doc

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

实验7 指针 【实验目的】 掌握指针的概念,会定义及使用指针变量、指针数组、行指针; 掌握指针的运算,会采用指针方法访问一维、二维数组;理解指针和数组的关系; 掌握指针作为函数参数,设计通用的函数;实现对一维数组的排序、查找,矩阵运算;及常用的字符串处理函数;熟悉动态分配内存方法; 【实验7.1】在10个元素的数组中找出与平均值最接近的元素,并输出该元素的值(要求用数组指针访问一维数组)。 【指导】 算法分析: 本题要解决两个问题: (1)计算10个元素的平均值; (2)找出与平均值最接近的数组元素。 对于第(2)个问题,可以将第一个元素与平均值的差为基准,然后依次计算其余各个元素与平均值的差,并与基准进行比较(注意要按绝对值进行比较),从而找出最小值,它所对应的元素就是与平均值最接近的元素。 参考程序: #include math.h #include stdio.h void main() { int i,k; float a[10],aver=0,b,diff,*p=a; for(i=0;i10;i++) scanf(%f,p+i); //输入原始数据存入数组 for(i=0;i10;i++) aver+=p[i]; //计算累加和 aver/=10; //计算平均值 k=0; diff=fabs(p[0]-aver); //计算第一个元素与平均值的差的绝对值 for(i=1;i10;i++) { b=fabs(p[i]-aver); if(bdiff) //寻找最接近于平均值的元素及其位置 { diff=b; k=i; } } printf(%f %f\n,diff,p[k]); } 答案: #include math.h #include stdio.h void main() { int pi,k; float a[10],aver=0,b,diff,*p=a; for (pi=0;pi10;pi++) scanf(%f,p[pi]); for(pi=0;pi10;pi++) aver+=p[pi]; aver/=10; printf(平均值为:%f\n,aver); k=0; diff=fabs(p[0]-aver); for(pi=1;pi10;pi++) {b=fabs(p[pi]-aver); if(bdiff) {diff=b;k=pi;} } printf(最小差为:%f 最接近的元素为:%f\n,diff,a[k]); } 【实验7.2】请编制程序,利用行指针,找出二维数组a[M][N]每一行中的最大值,然后从中找出最小值min。 【指导】 算法分析: (1)先定义数组a[M][N],s[M]及指向数组a的行指针(*p)[N],将每一行的最大值存放在数组s中,然后在数组s中找出最小值。 (2)为了求出数组a第i行的最大值s[i],先令s[i]=a[i][0],然后将s[i]依次与a[i][1],a[i][2],……,a[i][N-1]比较,凡是比s[i]大的a[i][j]就赋给s[i],经N-1轮比较后,s[i]中存放的就是该行的最大值。 (3)根据题目要求用行指针操作,数组元素a[i][j]的地址可用p[i]+j、*(p+i)+j或p[i][j]表示,数组元素a[i][j]的值可用p[i][j]、*(p[i]+j)或*(*(p+i)+j)表示。 参考程序: #define M 5 #define N 5 #include stdio.h void main() { int s[M],i,j,min; static int a[M][N],(*p)[N]=a; for (i=0;iM;i++) for (j=0;jN;j++) scanf(%d,p[i]+j); //输入原始数据存入二维数组 for (i=0;iM;i++) { s[i]=p[i][0]; for (j=1;jN;j++) //求每行最大值分别保存在数组s中 if (s[i]p[i][j])

文档评论(0)

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

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

1亿VIP精品文档

相关文档