一个数列中有20个整数,要求编一个函数invert(),他能够对从指定位置开始的n个数按相反顺序重新排列.急需!能写下完整的程序吗?采用指针方法访问数组

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 17:30:50
一个数列中有20个整数,要求编一个函数invert(),他能够对从指定位置开始的n个数按相反顺序重新排列.急需!能写下完整的程序吗?采用指针方法访问数组

一个数列中有20个整数,要求编一个函数invert(),他能够对从指定位置开始的n个数按相反顺序重新排列.急需!能写下完整的程序吗?采用指针方法访问数组
一个数列中有20个整数,要求编一个函数invert(),他能够对从指定位置开始的n个数按相反顺序重新排列.
急需!
能写下完整的程序吗?采用指针方法访问数组

一个数列中有20个整数,要求编一个函数invert(),他能够对从指定位置开始的n个数按相反顺序重新排列.急需!能写下完整的程序吗?采用指针方法访问数组
建栈 先把20个数压进栈 定义指针 再从指针位置从栈里提出N个数 反向排列 放到新的栈里 输出

void invert(int *A, int pos, int n) //数列A,pos为指定位置,n为个数
{ int i;
int *p,*q;
p=A+pos;
for(i=0;i {
*q=*(p+i);
*(p+i)=*(p+n-1-i);
*(p+n-1-i)=*q;
}
}

楼上的程序似乎有个小问题,不过方法真的很好。我小改了一下。
#include
void invert(int *A, int pos, int n) //数列A,pos为指定位置,n为个数
{ int i;
int *p,t;//把*q改成t,做为一个临时变量
p=A+pos;
for(i=0;i

全部展开

楼上的程序似乎有个小问题,不过方法真的很好。我小改了一下。
#include
void invert(int *A, int pos, int n) //数列A,pos为指定位置,n为个数
{ int i;
int *p,t;//把*q改成t,做为一个临时变量
p=A+pos;
for(i=0;i {
t=*(p+i);//把*q改成t,如果用*q的话可能会出现内存问题
*(p+i)=*(p+n-1-i);
*(p+n-1-i)=t;//把*q改成t
}
}
void main()
{
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int i;
invert(a,3,6);
for ( i = 0; i<10;i++ )
{
printf("%d ", a[i]);
}
}
这应该算是一个完整程序了吧。呵呵。主函数可以再按照你的自己要求改改。

收起