假设有一个数组a,有5个元素,通过键盘输入数组5个元素。调用子函数实现将数组元素相反存放

数组反序存放可以不用指针也能实现,之前的博客中有提到过
此次的分享着重于指针实现。

代码展示:

#include <stdio.h>
void fan(int *x,int n);
int  main()
{
    
    
 int i,arr[5],*p=arr; //定义一个数组,再定义指针变量将数组名赋值给指针变量。
 printf("The original array:\n");
 for(i=0;i<5;i++,p++)
   scanf("%d",p);//作输入p即表示每一个数组元素的地址
 printf("Output:\n");

p=arr;//再次赋值传递给子函

 fan(p,5); 
 printf("The array has been inverted:\n");
 for(p=arr;p<arr+5;p++)
   printf("%d ",*p);
 printf("\n");
 return 0;
}

void fan(int *x,int n)
 {
    
    

int temp,i;

for(i=0;i<n/2;i++)
{
    
    
	temp=*(x+i);
	*(x+i)=*(x+n-i-1);
	*(x+n-i-1)=temp;
}

 }

代码分析在代码中逐一体现。

for(i=0;i<n/2;i++)
{
    
    
	temp=*(x+i);
	*(x+i)=*(x+n-i-1);
	*(x+n-i-1)=temp;
}

这一部分就是核心算法,倒序存放,一开始不容易想出这种算法,对于我来说大部分的C语言题目如同找规律一般,算法确实难想,有兴趣可以买一本算法导论,

猜你喜欢

转载自blog.csdn.net/yooppa/article/details/114485538