写这个程序 在删除重复数组的时候 ,当他自己执行模块的时候是正确的,但当把所有都输出的时候,删除数组哪里就有一个数字没有了
#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");
}