练习6-指针与一维数组ans

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

练习6 指针与一维数组参考答案

一、目的

1、掌握指针变量的定义和引用方法;

2、掌握用指向一维数组的指针编写应用程序的一般方法。

二、实验

1.运行程序C6_1r.C(《指导》P38实验3.6-1(1)),验证结果。

运行结果:a=13,b=10

2.运行程序C6_2r.C(《指导》P38实验3.6-1(2)),验证结果。

运行结果:2,2,2

3.运行程序C6_3r.C(《指导》P38实验3.6-1(3)),验证结果。

运行结果:1 2 3 4

4.程序修改: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("%d\n",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(a

{t=*p1; /*应该将p1和p2指针指向的两个变量的值交换*/

*p1=*p2;

*p2=t;}

printf("a=%d,b=%d\n",a,b);

}

6.编写程序C6_6.C:用指针方法实现《指导》P39实验3.6-2(2)(将数组a中的n个数按反序存放)。要求:

①用首地址偏移量法输入数组,用指针移动法输出数组;

②用某种指针方法实现反序存放。

#include

#include

#define N 6

void main()

{ int a[N],i,*p=a;

int *q,temp;

/*输入数组,用首地址偏移量法*/

printf("Please input %d integers:\n",N);

for (i=0;i<=N-1;i++)

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 6

void main()

{int a[N],*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-1;p++) printf("%d ",*p);

printf("\n");

}

解2:选择排序,用指针偏移量法实现

#include

#define N 6

void main()

{int a[N],*p=a,i,j,temp,*pmin;

printf("Please input %d integers:\n",N);

for(i=0;i<=N-1;i++) scanf("%d",p+i);

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 6

void main()

{ int a[N],i,*p=a;

int *pmin,*pmax,temp;

printf("Please input %d integers:\n",N);

for (i=0;i

scanf("%d",a+i);

pmin=pmax=a;

for (p=a+1;p

if (*p<*pmin) pmin=p;

else if (*p>*pmax) pmax=p;

temp=*pmin;*pmin=*pmax;*pmax=temp;

printf("Output the numbers :\n");

for (p=a;p

printf("%d ",*p);

printf("\n");

getch();

}

11.[书面作业]《教程》P191习题6.2(4)(输入x,输出x在数组a中的位置,若数组a中没有值为x的元素,则输出“no found”)

注: 要求找到所有数

12.《教程》P191习题6.1(输入3个整数,按照从小到大的次序输出)

四、基础练习

《指导》P121“第6章指针”之基础练习:选择题1~9

相关文档
最新文档