首页 > 解决方案 > 程序行为不端 - 重复删除

问题描述

以下程序应该从数字序列中删除重复项。例如,通过程序运行 7, 7, 7, 2, 1 应该返回 7, 2, 1(实际上是 7, 2, 1, 0, 0)。

但是,任何时候我注释掉“int unique_list = 0;” 总的来说,程序行为不端,打印出随机数。

有人可以建议吗?

非常感谢,

#include <stdio.h>
#define MAXNUMS 5

void RemoveDuplicates(int list[]);

int main()
{
    int idx, numbers[MAXNUMS - 1];
    int unique_list = 0;

    printf("Enter %d numbers.\n", MAXNUMS);
    for(idx = 0; idx < MAXNUMS; idx++) {
            printf("input number %d: ", idx + 1);
            scanf("%d", &numbers[idx]);
    }

    printf("pass");

RemoveDuplicates(&numbers);

printf("\npass 1");

printf("\nThe new list is:\n");
  for (idx = 0; idx < MAXNUMS; idx++)
    printf("%d\n", numbers[idx]);
}


/* The list contains MAXNUMS integers */
/* Also, all duplicate elements are converted to 0 */
void RemoveDuplicates(int list[])
{
 int i;
 int j;
 int found;
 int unique_list = 0;

 for (i = 0; i < MAXNUMS; i++) {
 found = 0;
 for (j = 0; j < unique_list; j++) {
 if (list[j] == list[i])
 found = 1;
 break;
 }
 if (!found) {
 list[unique_list] = list[i];
 unique_list++;
 }
 }
 /* clean up the remainder of the list */
 for (j = unique_list; j < MAXNUMS; j++)
 list[j] = 0;
 return;
}

标签: debuggingduplicates

解决方案


推荐阅读