c++ 数组查找并删除_自学C(一)之数组元素删除与插入

2763a14d0d582470b4f9c7f20a342511.png

删除与插入的逻辑

在数组8,4,2,1,23中,要是删除某个数字,删除的并不是下标,

一旦建立好数组,下标就是建立好的,

例如盖一栋楼0,1,2,3,4,层楼,不能把3楼拆了,拆了楼就塌了哈哈哈。

所以删除的逻辑也是一样,

删除3楼也可以理解为 把3楼的人赶出去,住在4楼的人住下来

所以就得出了8,4,2,23,数组的总长度减一

二话话不说先上代码

#include<stdio.h>
#include<stdlib.h>


int main()
{
	printf("一共有8,4,2,1,23这5个数n");
	int a[] = { 8,4,2,1,23 };
	int deleteNumber = 0;
	int numberIdex = -1;//这里的值只要不是在下标值之内的都可以
	int addNumber = 0;

	printf("请输入你要删除的数字:");
	scanf_s("%d", &deleteNumber);
	for (int i = 0; i < 5; i++)
	{
		if (deleteNumber==a[i])
		{
			numberIdex = i;
			break;
		}
	}
	if (numberIdex==-1)
	{
		printf("你所输入的数字不存在");
		return(0);
	}
	else
	{
		for (int i = numberIdex; i <5-1; i++)
		{
			a[i] = a[i + 1];
		}
	}
	for (int  i = 0; i <4; i++)
	{
		printf("%dt", a[i]);

	}
	printf("请输入你要加入的数字:");
	scanf_s("%d", &addNumber);

	a[4] = addNumber;
	for (int i = 0; i < 5; i++)
	{
		printf("%dn", a[i]);
	}

	return 0;

}

详细解析

首先建立数组 8,4,2,1,23

int main()
{
	int a[] = { 8, 4, 2, 1, 23 };

}

如果要是想删除一个数字,就要接收这个数字,并获得这个数字的下标。

先定义一个deleteNumber接收所输入的数字,

再定义一个numberIdex接收该数字的下标,注意初始值不要是下标范围内的数字,方便后面判断该deleteNumber是否属于数组。

int main()
{
	int deleteNumber = 0;//定义一个数字用来接收用户输入的字
	int numberIdex = -1;//定义一个数字用来接收该数字的下标
	int a[] = { 8, 4, 2, 1, 23 };
	printf("请输入你要删除的数字:");
	scanf_s("%d", &deleteNumber);
	for (int i = 0; i < 5; i++)
	{
		if (deleteNumber==a[i])
		{
			numberIdex = i;
			break;
		}
	}
	

}

用numberIdex是否恒等于初始值,来判断输入的数字是否属于该数组。

if (numberIdex == -1)
	{
		printf("你输入的字不是在这个数组内");
		return 0;
	}

如果该数字属于该数组,就要替换数字,替换的起始位置就是删除的位置,比如1,2,3,4,5删除3,那么1和2就不变。数字提前就是从4开始的。

	else
	{
		for (int i = numberIdex; i < 5-1; i++)
		{
			a[i] = a[i + 1];

		}
	}

输出新的数组,这里要注意新的数组只有四个数字,千万不能再i<5了哦。

for (int i = 0; i < 4; i++)
	{
		printf("%dt", a[i]);
	}
	

到这里加个return 0;基本上就可以大功告成啦,

数组内数字进行插入

下面是加一个数字进入这个数组。

printf("请输入你要加入的数字");
	int addNumber = 0;
	scanf_s("%d", &addNumber);
	a[5 - 1] = addNumber;
	for (int i = 0; i < 5; i++)
	{
		printf("%dt", a[i]);
	}

这个笨方法哈哈哈 如果大家有比较好的添加方法也可以和我说哈哈哈,

这样就大功告成啦!如果有什么不对的地方,请指教谢谢!

梦想转技美的第十一天,

与君共勉!

--双木示羊

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值