欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 23:51:20
...

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

代码展示:

#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语言题目如同找规律一般,算法确实难想,有兴趣可以买一本算法导论,