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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值