详细讲解:C语言删除数组中的某一值的所有元素

article/2025/10/3 2:09:13

具体要求是这样的,通过键盘向程序输入数组中需要删除的数字,程序接到输入后删除数组中所有需要删除的数字。例如:

数组 a[10]={1,2,4,6,4,8,6,2,6,7}
删除数字 :6 
输出结果:1 2 4 4 8 2 7

想要实现这个功能,其基本思想其实很简单:检索数组,如果遇到与输入值相同的元素,则删除该元素。至于删除数组中的元素,就只需要把数组从中断处挨个往前移一位就好了。

但数组中要是出现多个相同的数字,就需要我们进行进一步的考虑了,元素的下标问题。
思路如下:
首先使用for循环对数组进行遍历,当遇到数组元素与需要删除的数字相同时,从该处起,将下标+1.假设我们输入的数字为:6,用for循环的变量i来遍历数组,则情况如下:

输入:x 为 6
下标  0 1 2 3 4 5 6 7 8 9     
元素  1 2 4 6 4 8 6 2 6 7
当i = 3 时,x = a[i] = 6,则数组a[10]从下标3开始,依次+1直到a[8](数组中第九个元素),即:下标  0 1 2 3 4 5 6 7 8 | 9     i = 3
元素  1 2 4 4 8 6 2 6 7 | 7

可以看见数组中第一个6已经消失了,因为数组最高下标就是a[9],所以a[9] 不能再+1,因此我们的+1操作最多只加到a[8].
因为 a[9] 的值已经赋给了 a[8],所以a[9] 已经可以舍去(否则就会重复),所以目前数组中有效部分是a[0]-a[8]九个元素。

当i = 5 时,x = a[i] = 6,则数组a[10]从下标5开始,依次+1直到a[7](数组中第八个元素),即:下标  0 1 2 3 4 5 6 7 | 8 9     i = 5
元素  1 2 4 4 8 2 6 7 | 7 7

数组中第二个6也消失了,数组的有效部分为a[0]-a[7]八个元素。

当i = 6 时,x = a[i] = 6,则数组a[10]从下标6开始,依次+1直到a[6](数组中第七个元素),即:下标  0 1 2 3 4 5 6 | 7 8 9     i = 6
元素  1 2 4 4 8 2 7 | 7 7 7

至此,数组中的所有的6都已经被删除了,留下了从 a[0]到a[6] 七个有效元素。
因此我们打印时只需要打印前面7位就可以了,不难看见,减去的这几位正好是 “6” 出现的次数,因此我们只需要再设置一个标记,每次要求删除的数字出现时就自+1,最后输出时用数组长度减去这个标记数字,就能把有效的元素全部输出了。

转换成代码就是:

#include<stdio.h>
#include<string.h>
int main()
{ int n,sum=0; //设置标记统计被删除数字的出现次数int a[10]={1,2,4,6,4,8,6,2,6,7};printf("\nthe array is:");for(int i=0;i<10;i++){printf("%d",a[i]);   //遍历数组}printf("\nplease insert a number:");scanf("%d",&n);for(int i= 0;i<10;i++){if(n==a[i]){	++sum;  //如出现,则下标自加1for(int j=i;j<10-sum;j++) //仅对有效部分元素进行自加{a[j]=a[j+1]; }}}printf("the answer  is :\n");for(int i=0;i<10-sum;i++)  //仅输出有效部分{printf("%d",a[i]);}
}

这样就完成了。一开始做这个例子的时候总是输出不正确,后面自己按照程序运行过程写了一下就搞清楚了。所以有时候大家要是不知道为什么会出现莫名其妙的结果时,不妨试着自己画画图,很多就是就是一个数字的差别。

运行结果

虽然这个例题很简单,但我觉得要是把其中的细节弄明白,对我们以后的编程也是很有好处的,至少我觉得又提升了一些对程序的理解。细节决定成败,大家加油!


http://chatgpt.dhexx.cn/article/tgHPCm2Y.shtml

相关文章

删除数组中重复元素(C语言)

编写函数&#xff0c;删除数组中所有的重复元素&#xff0c;使数组变成一个集合&#xff0c;函数返回集合中元素的个数。 书上习题 #include<stdio.h> int set(int a[],int n) {int i,j,k;for(i0;i<n;i)//每次以a[i]为比较标准{ji1;ki1;while(j<9){if(a[j]a[i]){j…

C语言实现删除元素

给定一组数组&#xff0c;输入一个下标&#xff0c;删除该下标元素并将删除后的数组打印出来。 解题思路&#xff0c;我们主要解决的是删除问题&#xff0c;可以给定一个变量进行循环&#xff0c;让此变量从要删除的下表开始&#xff0c;让被删除的下标的后一个元素赋值给前一个…

STM32工作笔记0021---4G通信模块CAT1和CAT4的区别

技术交流QQ群【JAVA,C,Python,.NET,BigData,AI】&#xff1a;170933152 同是4G模块&#xff0c;CAT1与 CAT4模块的区别有哪些 二 、CAT 与CAT4应用场景对比 CAT1的应用场景&#xff1a;穿戴式设备、智能家电、工业传感器、水文水利的检测、港口物流跟踪。共享支付类。对于宽带…

catboost介绍

一、Catboost简介 全称&#xff1a;Gradient Boosting(梯度提升) Categorical Features(类别型特征)作者&#xff1a;俄罗斯的搜索巨头Yandex官方地址论文链接 | 项目地址 文档地址视频 二、Catboost的特点 一般来说&#xff0c;Gradient Boosting(GB)方法适用于异质化数据。…

nb模块不能接收公网消息_nb模块不能接收公网消息_4G模块Cat1与Cat4的区别究竟在哪里呢?它又为何吸引众多Cat4用户的眼光呢?......

Cat1突然火了&#xff0c;众多行业大佬为其背书。 Cat1凭借其低成本、低功耗等优势与NB-IoT一同扛起了中低速率物联网市场大旗。 与此同时&#xff0c;Cat1也引来众多Cat4用户关注。 那Cat1与Cat4的区别究竟在哪里呢?它又为何吸引众多Cat4用户的眼光呢&#xff1f; 成本优势 1…

【内网学习笔记】20、Hashcat 的使用

1、介绍 Hashcat 是一款用于破解密码的工具&#xff0c;据说是世界上最快最高级的密码破解工具&#xff0c;支持 LM 哈希、MD5、SHA 等系列的密码破解&#xff0c;同时也支持 Linux、Mac、Windows 平台。 工具地址&#xff1a;https://hashcat.net 项目地址&#xff1a;http…

Cat.1和Cat.4的区别

Cat.1 Cat.4 NB-LOT 1.比较2.Cat.1和Cat.4 介绍 1.比较 2.Cat.1和Cat.4 介绍 要区别Cat.1和Cat.4&#xff0c;首先我们要知道Cat是什么。Cat 是 Category 的缩写&#xff0c;中文意思是“类别&#xff0c;种类”。Cat 后面的数字即代表不同的种类&#xff0c;3GPP 将不同种类的…

CAT1 与CAT4 区别与应用

要区别Cat.1和Cat.4&#xff0c;首先我们要知道Cat是什么。Cat 是 Category 的缩写&#xff0c;中文意思是“类别&#xff0c;种类”。Cat 后面的数字即代表不同的种类&#xff0c;3GPP 将不同种类的网络用 “Cat.X” 格式命名。根据 3GPP Release 定义&#xff0c;Cat.X 是用来…

生活网络常识—CAT1与CAT4的区别

大家好&#xff0c;今天给大家讲讲CAT1与CAT4的区别&#xff1b; 给出一张图片让大家生动地看到它们之前的差距与不同&#xff1b; 什么是Cat1与Cat4&#xff1f; 通俗来说我们可以理解为4G网络&#xff08;LTE&#xff09;的种类&#xff0c;分别代表UE的接入能力等级&#…

CAT1和CAT4的区别

现今&#xff0c;CAT1的发展势头一直很迅猛&#xff0c;那为什么CAT4不能替代CAT1的地位呢&#xff1f;&#xff0c;我们来看下面几点&#xff1a; 成本 1. 网络建设方面&#xff0c;Cat1可以无缝接入现有LTE网络当中&#xff0c;无需针对基站进行软硬件升级&#xff0c;网络…

Cat.1、Cat.4、4G之间的区别

什么是Cat.1&#xff1f; Cat.1的全称是LTEUE-Category1&#xff0c;其中UE指的是用户设备&#xff0c;它是LTE网络下用户终端设备的无线性能的分类。根据3GPP的定义&#xff0c;UE类别以1-15分为15个等级。Cat.1&#xff0c;可以称为“低配版”的 4G 终端&#xff0c;上行峰值…

Cat.1和Cat4的应用场景有什么区别

Cat.1是4G通信LTE网络下用户终端类别的一个标准。随着2G网络的承载能力进一步减弱&#xff0c;在新部署的物联网连接中NB-IoT、4G会逐步替代2G模组。相比NB-IoT&#xff0c;Cat.1在网络覆盖、速度和延时上均有优势;相比传统的LTE Cat.4模组则拥有低成本和低功耗优势。 Cat.1与C…

4G通信模块CAT1和CAT4的区别

简介 LTE CAT全名LTEUE-Category&#xff0c;拆开来解释:LTE指的是4GLTE网络、UE是指用户设备、Category翻译为等级。通顺解释就是用户设备能够支持的4GLTE网络传输速率的等级&#xff0c;也可以说成是4G网络速度的一个技术标准。所以LTE CAT1/CAT4就是指用户设备LTE网络接入能…

Python软件编程等级考试一级——20220618

Python软件编程等级考试一级——20220618 理论单选题判断题 实操第一题计算长方形的面积 画图题 Python软件编程等级考试一级——20220618——真题解析 理论 单选题 1、在Python编辑器中写好程序代码后&#xff0c;在Run菜单中&#xff0c;下列哪个命令可以用来执行程序&…

全国青少年编程等级考试python一级真题2021年3月(含题库答题软件账号)

对青少年编程等级考试Python真题答题考试系统关注的请点击 https://blog.csdn.net/zhengzyx2040/article/details/119329247 青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;一级&#xff09; 分数&#xff1a;100 题数&#xff1a;37 一、单选题(…

全国计算机二级考试python考试流程

考试和未来教育的系统是基本完全一致的。可以用来练习。 但考试的时候没有pycharm这种智能一点的编译器。后面有介绍怎么打开。 做完选择题就必须要提交了。 这里有个小tip&#xff1a;其实选择题的后半部分&#xff08;就是出现代码的那些题目&#xff09;&#xff0c;和后面大…

青少年python一级考试试题,青少年python一级考试

全国青少年软件编程等级考试是怎么样的&#xff1f; 一、组织机构&#xff1a;主办单位&#xff1a;中国电子学会承办单位&#xff1a;中国电子学会普及工作委员会、全国青少年电子信息科普创新联盟&#xff1b;经授权的地方教育主管部门、行业组织、科技馆、青少年宫、中小学…

计算机等级考试Python二级

文章目录 1.算法杂度1.1算法的特性1.2算法的基本要素1.3.1算法的控制结构1.3.2时间和空间复杂度 2.数据结构基本概念2.1数据结构的表示2.2线性表的顺序存储结构2.3线性链表2.4循环链表2.5栈和队列循环队列的计算 2.6树和二叉树二叉树的三序列辨别 2.7查找2.8排序2.8.1交换类排序…

大学考试Python考题

给你分享一下我自己亲身经历过的python考试题 记得点个关注~ 你可以参考下面的题进行练习&#xff0c;考试题换汤不换药&#xff0c;希望对你有帮助~ 一、选择题 1&#xff0e;下列哪个语句在Python中是非法的&#xff1f;&#xff08; B &#xff09; A、x y z 1 B、x …

大学Python考试考什么题?

给你分享一下我自己亲身经历过的python考试题 记得点个关注~ 你可以参考下面的题进行练习&#xff0c;考试题换汤不换药&#xff0c;希望对你有帮助~ 一、选择题 1&#xff0e;下列哪个语句在Python中是非法的&#xff1f;&#xff08; B &#xff09; A、x y z 1 B、x …