编写一个函数inv,将数组a中n个整数按相反顺序存放,用指针变量作为调用该函数时的实参

如题所述

#include <stdio.h>
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p,i; //指针变量
p=a; //将数组和a的首地址赋给指针变量啊;p=a[0];
inv(p,10);
printf("交换后的元素:");
for(i=0;i<10;i++)
{
printf("%3d",*(p+i)); //p+i表示的是数组元素中下标为i的地址,*(p+i)表示下标为i的元素
}
}
int inv(int *pa,int n)
{
int m,temp;
int *p,*pi,*pj; //用实参指针变量;
m = (n-1) / 2; //表示数组中中间值
pi = pa; //把指真pa首地址赋给pi
pj = pa+n-1; //指针pj的初值
p = pa + m;
for(pi = pa; pi <= p; pi++, pj--) //实现首尾交换
{
temp = *pi;
*pi = *pj;
*pj = temp;
}
return 0;
}
哪不明白可以问我哦
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-21
void fun(int *ptr,int n)
{
int i;
int tmp;
for(i=0;i<(n/2);i++){
tmp = ptr[i];
ptr[i] = ptr[n-i-1];
ptr[n-i-1] = tmp;
}
}
int main()
{
int ary[10] = {0,1,2,3,4,5,6,7,8,9};
int i;
fun(ary,10);
for(i=0;i<10;i++){
printf("%d,"ary[i]);
}
return 0;
}
第2个回答  2010-12-21
void inv(int *a, int n)
{
int tmp;
int i, j = n - 1;
for (i = 0; i < j; i++) {
tmp = *(a+i);
*(a+i) = *(a+j);
*(a+j) = tmp;
j--;
}
}本回答被提问者和网友采纳
相似回答