用C语言写一个差分函数diff()

/*
2020年3月30日22:46:37
diff:后一个元素减去前一个元素,但传入的形参一定要事先
确定好长度,不然会出错。 
参数:
dat---要做差分的数组地址 
datalen-----传入数组长度
ret_buf-----做差分之后存放的数组地址 
ret_len---差分之后的数组长度 
*/
void diff(int *dat,int datalen,int*ret_buf,int *ret_len)
{
 int i,j=0;
  
   for(i = 1; i<datalen; i++)
  {
    ret_buf[j++] = dat[i]-dat[i-1];
  } 
   *ret_len = j;
}
int main(void)
{
 int a[30]= {0};//要事先定义好数组长度 
 int i,len;
 int *buf; //存放差分后的结果 
 for(i = 0;i< 30; i++)//差分数组赋值 
 {
  a[i] = i;
  printf("a[%d]=%d\n",i,a[i]);
  
 }
 buf = (int*)malloc(sizeof(int)*(i-1));//申请动态空间 
 diff(a,i,buf,&len);
 for(i = 0;i< len; i++)
 { 
  printf("buf[%d]=%d\n",i,buf[i]);  
 }
 free(buf);
 return 0;
}


运行结果如下
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭飞万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值