C语言每日一练(5)将整型数组中数值相等的元素只保留一个,其他的删除,返回新数组的长度

题目:将整形数组中数字相同的数字只保留一个,其他的都删除,已知数组元素已经按从小到大的顺序排列。

    例如[2,2,2,3,3,4,5,5,6,6,7],处理完成之后的数字应该为[2,3,4,5,6,7],函数的返回值为新数组的长度。

题目很简单,因为已经按从小到大排列了,所以就是遍历数组,判断数组的当前元素是不是等于新数组的最后一个元素,如果不相等,就把值赋给新数组,新数组长度+1

代码如下:

/*
    题目:将整形数组中数字相同的数字只保留一个,其他的都删除
    已知数组元素已经按从小到大的顺序排列。
    例如[2,2,2,3,3,4,5,5,6,6,7],处理完成之后的数字应该为
    [2,3,4,5,6,7],函数的返回值为新数组的长度
*/

#include <stdio.h>

static int del_equal_value(int a[], int n)
{
    int i,j=0;
    if(n <= 0){         //判断输入的数组长度是否正确
        return 0;
    }else{
        for(i = 1; i<n; i++){
            if(a[j] != a[i]){   //判断数组遍历的当前值和新数组的最后一个值是否相等
                a[j+1] = a[i];  //如果不等,将值赋给新数组,新数组数量+1
                j++;
            }
        }
    }
    return j+1;         //数组的下标为j,所以元素个数为j+1;
}


int main(void)
{
    int a[11] = {2,2,2,3,3,4,5,5,6,6,7};
    int n = 11;
    int i;
    n = del_equal_value(a,n);
    if(n){
        for(i = 0; i<n; i++){
            printf("%d ",a[i]);
        }
        printf("\r\n");
    }else{
        printf("输入的数组长度有误\r\n");
    }
    
    return 0;
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值