admin 管理员组

文章数量: 1184232


2024年1月11日发(作者:php动态网页)

数组元素逆序存放

建立一个数组a,有n个元素,试通过函数调用的方法实现数组元素的逆序存放。

分析:设数组中有n个元素,将(a[0],a[n-1])互换,(a[1],a[n-2])互换,……,直到每对元素都互换一次。

源程序

/* 数组元素的逆序存放 */

#include

void main( )

{

int i, a[10],n;

void reverse(int *a, int n); /* 申明函数 */

printf("Input the Size of Array: ");

scanf("%d", &n)

for(i = 0; i < n; i++)

scanf("%d", &a[i]);

reverse(a, n);

for(i = 0; i < n; i++)

}

/* 使用数组作为函数参数实现逆序存放 */

void reverse(int p[ ], int n)

{

int i, j, t;

for(i = 0, j = n-1; i < j; i++, j--) { /* 交换数组元素位置 */

t = p[i];

p[i] = p[j];

p[j] = t;

}

}

/* 调用逆序函数 */

/* 数组长度,假设输入为10 */

printf("%dt", a[i]);

运行结果

Input the Size of Array:10

10 9 8 7 6 5 4 3 2 1

1 2 3 4 5 6 7 8 9 10

说明:数组名作为函数的实参,在被调用函数中,就能访问实参数组所在的存储单元,不但可以引用,还能改变这些单元的内容。返回主调函数后,相应数组元素的值就改变了。同样我们可以用指针操作实现函数reverse(),下面是使用指针操作的recerse()函数的代码。

/* 使用指针实现数组元素逆序存放 */

void reverse(int *p, int n)第1页,共2页

{

int *pj, t;

for(pj = p+n-1; p < pj; p++, pj--) {

t = *p;

*p = *pj;

*pj = t;

}

}

在以上代码中,循环体中pj指向数组最后一个元素,而p指向数组的基地址。每次交换后,p和pj分别自增和自减,直到指针重合为止。

第2页,共2页


本文标签: 数组 元素 函数 逆序