C语言,数组元素的增删

#include <stdio.h>
#include <stdlib.h>
#define N 5 //宏定义,不是必须的(是个常量,不能在程序中进行加减运算)
int main()
{
   /*
   删除的逻辑
   12 34 23 67 9
   12 34 67 9 9
   1、查找要删除的数字的下表 2
   2、从下标开始,后面一个覆盖前面一个数字
   3、数组的总长度-1
        */
   int count = 5; //表示数组元素的个数
   double powers[] = {42322,45771,40907,41234,40767};
   double deletePower; //用户要删除的战力值
   int deleteIndex = -1; //要删除元素的下标,给一个不可能的初值,方便判断。
   int i; //循环变量
   double insertPower; // ner insert power
   printf("请输入要删除的战力值:\n");
   scanf("%lf",&deletePower);
   for(i = 0; i<count; i++)
   {
       if(deletePower == powers[i])
       {
           //记录下当前的下标
           deleteIndex = i;
           break; //找到了要删除的战力值,直接跳出循环,提升效率
       }
   }
   //根据判断(是否找到),执行后续操作
   if(-1 == deleteIndex)
   {
       printf("没有对应的战力值!\n");
   }
   else
   {
       //cover the former number from the index
       for(i = deleteIndex; i < count -1; i++)  //cover count-1 times
       {
           powers[i] = powers[i +1];
       }
    count--;
   }
   printf("Final result :\n");
   for(i = 0 ; i < count; i++)
   {
       printf("%.2lf\t",powers[i]);  //save 2 nums after dot
   }
   // insert a new num after delet
   printf("\n Please insert your new power num:\n");
   scanf("%lf",&insertPower);
   powers[count] = insertPower;
   // afer insert. length+1
   count++;
      for(i = 0 ; i < count; i++)
   {
       printf("%.2lf\t",powers[i]);  //save 2 nums after dot
   }

}

ressult

猜你喜欢

转载自blog.csdn.net/cxd15194119481/article/details/84715091
今日推荐