程序有错误,在删除数组那里

写这个程序 在删除重复数组的时候 ,当他自己执行模块的时候是正确的,但当把所有都输出的时候,删除数组哪里就有一个数字没有了

#include<stdio.h>
#define COUNT 6
int a[COUNT], count = COUNT, k, m, b[COUNT],t,c[COUNT];
void oarray(){  //输出原数组
    printf("原数组:");
    for (k = 0; k < COUNT; k++)
        printf("%5d", b[k]);
    printf("\n");
}

void sort(){  //排序算法
    for(k=0;k<COUNT-1;k++)  //排序数组
            for(m=k+1;m<COUNT;m++)
                if (c[k] > c[m]) {
                    t = c[k];
                    c[k] = c[m];
                    c[m] = t;
                }
        for (k = 0; k < COUNT; k++)
            a[k] = c[k];
        printf("排序后数组为:");
        for (k = 0; k < COUNT; k++)
        printf("%5d", c[k]);
    printf("\n");
}

void darray(){  //删除重复数组

        for(k=0;k<COUNT-1;k++)  //排序数组
            for(m=k+1;m<COUNT;m++)
                if (c[k] > c[m]) {
                    t = c[k];
                    c[k] = c[m];
                    c[m] = t;
                }
        for (k = 0; k < COUNT; k++)
            a[k] = c[k];
    
    for (k = COUNT - 1; k > 0; k--) //删除重复数组
        if (a[k] == a[k - 1]) {
            for (m = k - 1; m < COUNT - 1; m++)
                a[m] = a[m + 1];
            count--;
        }
            printf("删除重复后的数组:");
    for (k = 0; k < count; k++)
        printf("%5d", a[k]);
    printf("\n");


}
 
void choose(){  //选项
    printf("选择选项:\n\n");
    printf("1.输出原数组\n\n");
    printf("2.输出排序后数组\n\n");
    printf("3.输出删除重复后的数组\n\n");
    printf("4.输出所有\n\n");
    printf("5.退出\n\n");
    printf("请输入数据1,2,3,4,5\n\n");
    int x;
    printf("\n\n");
    do{
  
        scanf("%d",&x);
        switch(x){
        case 1: oarray(); printf("退出按5\n\n");    break;  
        case 2: sort(); printf("退出按5\n\n");    break; 
        case 3: darray(); printf("退出按5\n\n");    break; 
        case 4: oarray();sort();darray();     printf("退出按5\n\n");    break; 
        case 5: break;
        default:break;
        }
    }while(x!=5);
}


void main(){
    

    printf("Input %d data in order:\n", COUNT);
for (k = 0; k < COUNT; k++) {  
        printf("a[%d]=", k);
        scanf("%d", &a[k]);
        b[k] = a[k], c[k] = a[k];
    }
    
    oarray();
    choose();


    //system("pause");


}

img

你的 count 变量在每次调用 darray() 函数的时候都对原来的数组进行排序删除重复,然后 count-- 改变了原来的值,随着调用次数增加,你这个 count 变量一直在减,逻辑出问题了。
要么你在 darray() 函数开始的地方加上 count = COUNT; 重新赋值,应该就可以了。

count 小写的这个变量 每次执行删除操作后需要复原成6吧