今天我们写一个插值算法与删除算法,也就是在一个数组当中的某一个位置插入一个数,其他的元素不变。老样子,我们直接上代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int b[11];
int num;//num为插入值
int Index;//Index为插入下标
printf("请输入插入值的下标:》");
scanf("%d", &Index);
printf("请输入插入值:》");
scanf("%d", &num);
for (int i = 0; i < 11; i++)
{
if (i < Index)
b[i] = a[i];//当i不等于插入下标时,直接进行替换
else if (i == Index)
b[i] = num;//当i等于插入下标时,令b[Index](即:b[i])等于插入值
else
b[i] = a[i - 1];//跳过b[Index],进行替换
printf("%d\t", b[i]);
}
return 0;
}
结果检验:
在第五个元素输入11,其他不变。
那么删除算法也是有异曲同工之妙,要求是在一行一维数组中输入对应数的下标,则对应的数也会删除,如数组{0,1,2,3,4,5,6,7,8,9},输入“10”则会删除“10”对应的元素“9”
老样子,我们直接看代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int b1[10] = {0,1,2,3,4,5,6,7,8,9};
int a1[9] = { 0 };
int Index;//删除数的下标
printf("输入你要删除数的下标:>>");
scanf("%d", &Index);
for (int i = 0; i < 10; i++)
{
if (i < Index - 1)
a1[i] = b1[i];
else
a1[i] = b1[i + 1];
}
for (int i = 0; i < 9; i++)
printf("%d\t", a1[i]);
}
结果检验:
当然,我们可以对这个代码进行优化一下,比如可以自己输入原始代码的元素,那么我们可以使用以下代码替换:
for(int i = 0;i < 10; i++)
{
scanf("%d%,&a[i])
}