检查一个数字是否已经出现在一个数组中,该数组具有用户引入的值
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");
}
}
我正在学习在 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");
}
}