检查数组中的重复值

时间:2014-03-12 15:27:09

标签: c

我想创建这个程序:

用户输入10个不同的值。但是当用户输入相同的值时,程序会发出警告。我做了一些事情但是没有用。

如何为此程序创建工作算法?

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

int main()
{
    int x,i,j;
    int dizi[10];

    for (i = 0; i < 10; i++)
    {
        printf("%d. number\n", i + 1);
        scanf_s("%d", &dizi[i]);

        for (j = 0; j < 10; j++)
        {
            if (dizi[j] == dizi[i])
            {
                printf("You have already entered this number");
            }
        }

    }

    printf("Entered numbers:\n");
    for (i = 0; i < 10; i++)
    {
        printf("%d\t", dizi[i]);
    }

    system("pause");
    return 0;
}

3 个答案:

答案 0 :(得分:0)

当您将警告减少i减1时。 否则你不会得到10个不同的号码。

if (dizi[j] == dizi[i])
    {
        printf("You have already entered this number");
        i--;
    }

带j的内循环应该只检查到i。

for( int j=0; j<i; j++)

答案 1 :(得分:0)

将检查循环更改为

for (j = 0; j < i; j++)

否则支票将使用未初始化的数据进行检查。

答案 2 :(得分:0)

for (j = 0; j < i; j++)
{
    if (dizi[j] == dizi[i])
    {
        printf("You have already entered this number\n");
        --i;
        break;
    }
}