在列表中查找一个数字(从键盘读取),其中列表的大小和列表将从键盘读取

  • 本文关键字:列表 键盘 读取 数字 查找 一个 c
  • 更新时间 :
  • 英文 :


我无法在下面的代码中找出错误,我想在列表中检查一个数字,如果存在,代码会打印"是",如果不存在,则打印"否"。我收到的输出是随机的是和否。有时它是正确的,但有时它是错误的。

{
int n, N, a[n], i, flag = 0;
printf("n , Nn");
scanf("%d%d", &n, &N);
printf("an");
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n; i++)
{
if(a[i] == N)
{
flag = 1;
break;
}
}
if(flag == 0)
printf("Non");
else
printf("Yesn");
return 0;
}

我试图获取一个大小为n的数组,用户随后将在代码中输入该数组,同时声明大小。我正在输入n的值,该值将在列表中找到。。然后使用for循环,我比较存储的每个数字,但我认为这里的代码失败了。

问题语句说,您需要找出给定的值N是否存在于给定的n值中。它不需要存储这些n值。

所以只要一到就检查一下就足够了。。。放弃它,只记住测试的阳性结果。不需要数组。

这里有一个简化的实现:

int n, N, a, i, flag = 0;
puts("n , N");
scanf("%d%d", &n, &N);
puts("a");
for(i = 0; i < n; i++) {
scanf("%d", &a);
if(a == N)
flag = 1;
}
puts(flag ? "Yes" : "No");

首先,试着理解"某个程序员家伙"对你的帖子的评论。你的代码中有一个错误。您声明了数组a[n],而变量n尚未初始化。因此,首先需要声明一个指针*a,然后将数组的大小作为用户的输入,最后使用malloc()函数在指针*a中分配内存。这是工作代码:

#include<stdio.h>
#include <stdlib.h>
int main()
{
int n, N, *a, i, flag = 0;
printf("n , Nn");
scanf("%d%d", &n, &N);
a = (int *) malloc(sizeof(int) * n);
printf("an");
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
for (i = 0; i < n; i++)
{
if(a[i] == N)
{
flag = 1;
break;
}
}
free(a);
if(flag == 0)
printf("Non");
else
printf("Yesn");
return 0;
}

最新更新