在C数组中打印非重复

时间:2015-08-05 18:41:01

标签: c arrays

我正在为C类(xtra信用分配)介绍一个程序,并且无法弄清楚如何丢弃数组上的重复数字。该问题要求仅打印非重复项;所以我能够打印第一个数字,比较以下和打印如果不同,我丢弃下一个如果重复,但事情是我只知道如何比较它跟随一个数字,我想我可以在for循环中为循环做另一个循环,但我感到非常困惑,只是无法弄明白。我上周已经提交了我的代码,我一直在努力为自己解决这个问题,所以任何帮助/指导都会非常感激。

"编辑:问题在于:使用单下标数组来解决以下问题。读入20个数字,每个数字在10到100之间,包括10和100。读取每个数字时,只有当它不是已读取的数字的副本时才打印它。提供所有20个数字不同的最坏情况。使用尽可能小的数组来解决这个问题"

提前致谢,关于我如何撰写我的程序的任何建议也将受到赞赏,因为我是一个总的菜鸟,并试图成为一个尽可能少坏习惯的优秀程序员。

#include <stdio.h>
#include <stdlib.h>

#define AS 20

void findDuplicate (int af[], int fAS);

int main(){

    int a[AS], i , j, k;
    int last = 0;

    printf("Enter %d numbers between 10 and 100:\n", AS);

    for (i = 0; i < AS; i++){
        scanf("%d",&a[i] );
        if (a[i] >= 10 && a[i] <= 100 ){
            continue;
        } else {
            printf("You must enter values between 10 - 100\n");
            i = i -1;
        }   
    }

    findDuplicate(a, AS);

    system ("pause");
    return 0;
}



void findDuplicate (int af[], int fAS){
    int c;

    printf("You entered ");

    for (c=0; c < fAS; c++){
            if (af[c] != af[c+1]){
                printf("%d ", af[c]);
            }
            continue;
        }

    printf("\n");
}

1 个答案:

答案 0 :(得分:0)

首先应该定义一个可以保存任意数量变量的数组。 假设您正在比较10-100,这意味着91个可能的不同数字。

所以,定义大小为91的数组。然后在for循环中扫描91次,看看你是否有先前输入的变量。如果没有,则保存并显示,否则丢弃。