前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言经典100例005-删除一维数组中所有相同的数

C语言经典100例005-删除一维数组中所有相同的数

原创
作者头像
Python编程爱好者
修改2020-11-06 17:47:25
1.7K0
修改2020-11-06 17:47:25
举报

系列文章《C语言经典100例》持续创作中,欢迎大家的关注和支持。

喜欢的同学记得点赞、转发、收藏哦~

后续C语言经典100例将会以pdf和代码的形式发放到公众号

欢迎关注:计算广告生态 即时查收

1 题目

函数:fun()

功能:删除一维数组中所有相同的数,使之只剩一个。

描述:数组中的数据已经按照从小到大排列,函数返回删除后数组中元素的个数

举例:

一维数组中的数据是:2,2,2,2,3,3,4,4,5,6,6,6,7,7,8,9,9,9,10,10

删除后数组中的内容是:2,3,4,5,6,7,8,9,10

image.png
image.png

2 思路

初始化没有重复元素最右方的指针 a

当前元素与前一个元素进行比较,如果相同,则调到下一个,否则指针a+1

3 代码

代码语言:txt
复制
#include <stdio.h> 

#include <stdlib.h>

#define N 20



/\*\*

函数:fun()

功能:删除一维数组中所有相同的数,使之只剩一个。

描述:数组中的数据已经按照从小到大排列,函数返回删除后数组中元素的个数

举例:

一维数组中的数据是:2,2,2,2,3,3,4,4,5,6,6,6,7,7,8,9,9,9,10,10

删除后数组中的内容是:2,3,4,5,6,7,8,9,10

\*\*/







int fun(int \*s) {

    int a = 1;

    for (int i = 1; i < N; ++i) {

        if (\*(s+i) != \*(s+i-1)) {  // 当前元素与前一个元素进行比较,如果相同,则调到下一个,否则a+1

            \*(s+a) = \*(s+i);

            a++;

        }

    }

    return a;

}





int main(int argc,char const \*argv[]) { 

    int s[N] = {2,2,2,2,3,3,4,4,5,6,6,6,7,7,8,9,9,9,10,10};

    int cnt = fun(s);

    printf("删除后的数组元素个数为:%d\n",cnt);

}

示例结果:

代码语言:txt
复制
$ gcc ex005.c -o demo

$ ./demo

删除后的数组元素个数为:9

-- END --

喜欢本文的同学记得点赞、转发、收藏~

更多内容,欢迎大家关注我们的公众号:计算广告生态

后续C语言经典100例将会以pdf和代码的形式发放到公众号

同时也带来更多系列文章以及干货!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 题目
  • 2 思路
  • 3 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档