您的位置:首页 > 编程语言 > C语言/C++

将数组a中的n个整数按相反顺序存放

2016-03-30 00:21 253 查看
\\好的,现在已经看到指针了,为了决定尽快熟悉指针,所以这段时间要一直用指针来写

\\今天呢就先把课本上的一道例题打一下

题目主要是要求将一个数组内的整数按相反顺序存放

例:3,7,9,11,0,6,7,5,4,2变为2,4,5,7,6,0,11,9,7,3

先定义一个交换的函数exchange。

<span style="font-size:14px;">void exchange(int *arr,int n)
{
int *x,*y;
int t;
x=arr,y=arr+n-1;
for(;x<arr+(n-1)/2;x++,y--)
{
t=*x;
*x=*y;
*y=t;
}
}</span>


先定义指针变量,并把数组起始地址和最后一个元素地址赋给指针变量x,y

   for(;x<arr+(n-1)/2;x++,y--)

通过这个循环使得发生改变,但是注意循环只运行到起始和末尾的中间就停止

\\余下的就很简单啦

全部源代码如下

#include<stdio.h>
int main()
{
void exchange(int *arr,int n);
int a[10]={3,7,9,11,0,6,7,5,4,2},i=0;
int *p;
printf("the orginal array:\n");
for(p=&a;p<(a+10);p++) printf("%d ",*p);
p=&a;
exchange(p,10);
printf("\nthe changed array:\n");
for(p=&a;p<(a+10);p++) printf("%d ",*p);
printf("\n");
return 0;
}
void exchange(int *arr,int n)
{
int *x,*y,*z;
int t;
x=arr,y=arr+n-1,z=x+(n-1)/2;
for(;x<arr+(n-1)/2;x++,y--)
{
t=*x;
*x=*y;
*y=t;
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言