/*
题目要求:一个表示战斗力的数组,要求删除数组中的某一数值,并插入新的数值,要求排序
思路:
1:查找要删除数字的下标
2:从下标开始,后面一个覆盖前面一个数字
3:数组的总长度要减去1
*/
#include <stdio.h>
#include <stdlib.h>
int main()
{
int count = 5;//表示数组的元素的个数
double powers[] = { 42322, 45771, 41234, 40767, 40987 };
double deletepower;//用户要删除的战斗力
int deleteindex=-1;//要删除战斗力的下标,要给一个不可能的值,方便判断
int i;//循环变量
double insert;//新插入的战斗值
printf("请输入要删除的战力值:\n ");
scanf("%lf", &deletepower);
for (i = 0; i < count; i++)
{
if (deletepower == powers[i])
{
//记录当前的下标
deleteindex = i;
break;//找到了要删除的战力值,直接跳出循环,提升效率
}
}
//根据判断是否找到,执行后续的操作
if (-1 == deleteindex)
{
printf("很遗憾,没有找到要删除的战力值,删除失败!\n");
}
else
{
for (i = deleteindex; i < count - 1; i++)
{
powers[i] = powers[i + 1];
}
//删除完毕后,一定记得数组长度减1
count--;
}
printf("删除后的结果为: \n");
for (i = 0; i < count; i++)
{
printf("%.2lf\t\n", powers[i]);
}
//删除之后进行插入
printf("请输入新插入的战斗值:\n ");
scanf("%lf", &insert);
powers[count] = insert;
//插入操作完毕后,记得数组总长度+1;
count++;
printf("插入后的结果为: \n");
for (i = 0; i < count; i++)
{
printf("%.2lf\t\n", powers[i]);
}
//如果想让战力值有序,直接使用冒泡排序即可
}
只有在至少删除一个数值后才能插入新的数值,程序还可以改进~