练习6-指针与一维数组ans.doc_第1页
练习6-指针与一维数组ans.doc_第2页
练习6-指针与一维数组ans.doc_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

练习6 指针与一维数组 参考答案一、目的1、 掌握指针变量的定义和引用方法;2、 掌握用指向一维数组的指针编写应用程序的一般方法。二、实验1 运行程序C6_1r.C(指导P38实验3.6-1(1)),验证结果。运行结果:a=13,b=102 运行程序C6_2r.C(指导P38实验3.6-1(2)),验证结果。运行结果:2,2,23 运行程序C6_3r.C(指导P38实验3.6-1(3)),验证结果。运行结果:1 2 3 44 程序修改:C6_4m.C首先使指针pa指向变量a(初值为10),然后通过pa间接访问a的方法将a的值修改为20。程序在一对/*/之间有两个错误,请修改。#include void main()int a=10,*pa; /*/pa=&a; /*将20赋给pa指向变量(即a)*/*pa=20; /*将20赋给pa指向变量(即a)*/*/printf(%dn,a);5 运行程序C6_5m.C,输入两个整数,观察程序能否实现功能:使用指针将两个数按降序重新存放。如果不能实现,请修改程序实现上述要求。#include void main( )int a,b,*p1=&a,*p2=&b,t; printf(input a and b:); scanf(%d %d,&a,&b);if(ab) t=*p1; /*应该将p1和p2指针指向的两个变量的值交换*/ *p1=*p2; *p2=t; printf(a=%d,b=%dn,a,b);6 编写程序C6_6.C:用指针方法实现指导P39实验3.6-2(2)(将数组a中的n个数按反序存放)。要求: 用首地址偏移量法输入数组,用指针移动法输出数组; 用某种指针方法实现反序存放。#include#include#define N 6void main() int aN,i,*p=a; int *q,temp;/*输入数组,用首地址偏移量法*/ printf(Please input %d integers:n,N); for (i=0;i=N-1;i+) /*反序存放实现2首地址偏移量法 */for(i=0;i=N/2-1;i+) temp=*(a+i);*(a+i)=*(a+N-1-i);*(a+N-1-i)=temp;scanf(%d,a+i);/*或scanf(%d,p+i);*/*反序存放实现1指针移动法(好!)*/ for (p=a,q=a+N-1;pq;p+,q-) temp=*p;*p=*q;*q=temp;/*输出数组,用指针移动法*/ printf(Output the numbers :n); for (p=a;p=a+N-1;p+) printf(%d ,*p); printf(n); getch();7 书面作业编写程序C6_7.C:用指针方法实现教程P191习题6.2(5)(输入10个整数存入数组a中,按从小到大的次序输出)。解1:选择排序,用指针移动法实现#include#define N 6void main()int aN,*p,*q,temp,*pmin; printf(Please input %d integers:n,N); for(p=a;p=a+N-1;p+) scanf(%d,p); for(p=a;p=a+N-2;p+) pmin=p; for (q=p+1;q=a+N-1;q+) if(*q*pmin) pmin=q; if(pmin!=p) temp=*pmin;*pmin=*p;*p=temp; printf(Output the numbers :n); for (p=a;p=a+N-1;p+) printf(%d ,*p); printf(n);解2:选择排序,用指针偏移量法实现#include#define N 6void main()int aN,*p=a,i,j,temp,*pmin; printf(Please input %d integers:n,N); for(i=0;i=N-1;i+) scanf(%d,p+i); for(i=0;i=N-2;i+) pmin=p+i; for (j=i+1;j=N-1;j+) if(*(p+j)*pmin) pmin=p+j; if(pmin!=p+i) temp=*pmin;*pmin=*(p+i);*(p+i)=temp; printf(Output the numbers :n); for(i=0;i=N-1;i+) printf(%d ,*(p+i); printf(n);三、编程选做(均要求用指针方法)8 教程P191习题6.2(1)(输出数组元素的平均值)9 教程P191习题6.2(2)(输出数组中的最大值与次最大值)10 教程P191习题6.2(3)(将数组中最大值与最小值的位置互换后输出)#include#include#define N 6void main() int aN,i,*p=a; int *pmin,*pmax,temp; printf(Please input %d integers:n,N); for (i=0;iN;i+)/ scanf(%d,a+i); pmin=pmax=a; for (p=a+1;pa+N;p+) if (*p*pmax) pmax=p; temp=*pmin;*pmin=*pmax;*pmax=temp; printf(Output the numbers :n); for (p=a;pa+N;p+) printf(%d ,*p); printf(n); getch();11 书面作业教程P191习题6.2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论