核心算法:从第i项开始,用每一项的后一项来覆盖这一项,到第n-1结束。
然后只输出这n-1项,就出现了类似于删除的效果。
下面是源代码
在这里插入#include<stdio.h>
int shanchu()
{
int i, n, t,a[99] = { 0 };//定义一个超长的数组,让他们全都初始化为0,这样只需选取其中的一部分使用
printf("请输入数组长度\n"); //而不用担心数组长度不够的问题
scanf_s("%d", &i);
printf("请输入数组;\n");
for (n = 0; n <= i - 1; n++)//只有知道了数组长度才能用循环输入一个数组,注意:位数=下标-1!!!牢记这一点!!
scanf_s("%d", a + n);//a+n是a[n]的地址
printf("请输入要删除的位数:");
scanf_s("%d", &t);//t和i都是提供一些必要信息的参数,不作为循环变量出现,只控制循环初值和末值和循环次数
for (n = t - 1; n <= i - 2; n++)//t,i都是位数,故表示下标要-1,但由于要删去一位,故循环到倒数第二位为止,所以最后为i-1-1即i-2
a[n] = a[n + 1];//采用从删除位到倒数第二位都被赋成下一位的算法,所谓删除其实只是被下一位覆盖了而已
printf("删除后得到的数组是:");
for (n = 0; n <= i - 2; n++)//所有输入输出的循环都只用n作为循环控制变量即可,
printf("%d ", a[n]);
return 0;
}代码片
运行结果