![2763a14d0d582470b4f9c7f20a342511.png](https://img-blog.csdnimg.cn/img_convert/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]);
}
这个笨方法哈哈哈 如果大家有比较好的添加方法也可以和我说哈哈哈,
这样就大功告成啦!如果有什么不对的地方,请指教谢谢!
梦想转技美的第十一天,
与君共勉!
--双木示羊