实验7指针剖析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验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++) // if (s[i]p[i][j])  入原始数据存入二 数 求每行最大 分 保存在数  s 中 s[i]=p[i][j]; } min=s[0]; for (i=1;iM;i++) // 求 s 中的最小值 if (mins[i]) min=s[i]; printf(Min=%d\n,min); } 【实验 7.3 】请编制函数 calc ,其功能是对传送过来的两个实数求出和值与差值,并通过两个指针形参分别将这两个值传送回调用函数。该函数原型为: void calc(float x,float y,float *a

文档评论(0)

135****4203 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档