检查一个数字是否已经出现在一个数组中,该数组具有用户引入的值

Check if a number is already presented on an array with values introduced by the user

我正在学习在 C 上编程,我正在尝试创建一个程序来扫描用户建立的一定数量的数字,并将它们存储在我稍后将使用的数组中,但是用户输入的数字不能重复,所以我试图通过 for 循环内的比较来实现此限制。 我已经尝试过其他类型的循环,但我无法使其正常工作。

谢谢!

到目前为止,这是我的代码:

#include<stdio.h>
int main ()
{
    int n;
    int i;
    int num;
    printf("Introduce the amount of numbers you will register \n");
    scanf("%d",&n);
    int N[n];
    printf("Introduce your numbers \n");
    for (i=0; i<n; i++)
    scanf ("%d",&num);
    {
        if (num == N[i])
        {
            printf("You already introduced this number, try again");
        }   

            N[i]=num;
            printf("____________ \n");  
    }
    getchar ();
    getchar ();
    return 0;   
} 

当我运行这个程序的输出是这个,我不知道为什么

Introduce the amount of numbers you will register
5
Introduce the first value
1
____________
____________
____________
____________
You already introduced this number, try again ____________

--------------------------------

对于初学者,您不能声明具有零个元素的可变长度数组

int n=0;
//...
int N[n];

需要在变量n中输入正值后声明数组

int n;

//...

printf("Introduce the amount of numbers you will register");
scanf("%d",&n);

int N[n];

也因为数组没有初始化所以比较

if (num == N[i])

调用未定义的行为。

您还必须在循环中输入值,

你需要这样写

for ( i=0; i<n;)
{
    scanf ("%d",&num);

    int j = 0;

    while ( j != i && num != N[i] ) ++j;

    if ( j != i )
    {
        printf("You already introduced this number, try again");
    }
    else
    {   
        N[i++] = num;
        printf("____________ \n");  
    }
}