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页
版权声明:本文标题:数组元素逆序存放——示例与分析资料文档 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1704985106a468611.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论