数组增减下标出现重复数字是怎么回事?甚至还少了一个原有的数字。

#include<stdio.h>
#include<stdlib.h>
#define N 5

int main()
{
double powers[] = { 42322,45771,40901,4134,40907 };
int count = 5; //表示数组元素的个数
double deletepower;
int deleteindex = -1; //要删除战斗力的下标,给一个不可能的初值,方便判断
int i, j; //循环变量
double xu; //临时变量
double insertpowers;

printf("请输入要删的战斗力;");
scanf_s("%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--;

}



for (i = 0; i < N; i++)
{
    for (j = 0; j <N; j++)
    {
        if (powers[i] > powers[j])
        {
            xu = powers[i];                                                                                //排顺序数字
            powers[i] = powers[j];
            powers[j] = xu;
        }
    }
}

printf("删除后的结果为: \n");
for (i = 0; i < count; i++)
{
    printf("%.lf\t", powers[i]);
}

printf(" \n");
printf("输入新的战斗力:");
scanf_s("%lf", &insertpowers);
powers[count] = insertpowers;
count++;

for (i = 0; i < N; i++)
{
    for (j = 0; j <N; j++)
    {
        if (powers[i] > powers[j])
        {
            xu = powers[i];                                                                                //排顺序数字
            powers[i] = powers[j];
            powers[j] = xu;
        }
    }
}

printf("插入后的结果为: \n");
for (i = 0; i < N; i++)
{
    printf("%.lf\t", powers[i]);
}




return 0;

}

img

N 是宏, 一直为5, 当你删除和添加的时候, 你不可以使用N, 要使用更改后的count.

img

望采纳!已改正,错在删除那里的逻辑

else
{
for (i = deleteindex; i < count - 1; i++)
{
powers[i] = powers[i + 1]; //数组长度-1
}
count--;

}
我新出的数据结构,对这种操作,特别下饭,建议过来学习