gpt4 book ai didi

c - 在数组中搜索数字 - C

转载 作者:行者123 更新时间:2023-11-30 18:52:02 24 4
gpt4 key购买 nike

好吧..我一直在尝试让这段代码工作,但由于某种原因它没有工作,而且我似乎找不到问题。有人可以清除它吗?它应该运行 5 个数字,然后您应该输入您想知道数组中是否存在的所需数字。它只是一直说不。

void search_for_number(int *a, int search);

int main(void)
{
int number[5];
int i, search, a = 1;

for(i = 0; i < 5; i++)
{
printf("Number %d of 5: \n", a++);
scanf("%d", &number[i]);
}

printf("\nWhat number should we search for?: \n");
scanf("%d", &search);

search_for_number(&number[i], search);
}

void search_for_number(int *a, int search)
{
int i;

for(i = 0; i < 5; i++)
{
if(*a == search)
{
printf("%d is present!\n", search);
}
}

if(*a != search)
{
printf("%d is not present.\n", search);
}
}

最佳答案

要将数组发送到函数,您需要发送数组的基地址并使用指针接收它。

search_for_number(&number[i], search);

在这一行中,i = 5,因为您在 for 循环后没有重置它。

要么在调用函数之前重置它,要么简单地这样做

search_for_number(number, search);

因为数组的名称就是基地址本身。

<小时/>

另一个问题是您在函数中访问数组的方式。

在函数 search_for_number() 中,由于 a 现在指向数组的第一个整数,您可以通过执行 a[i]< 来访问它们,基本上意味着*(a + i)。因此,更改后它应该看起来像,

for(i = 0; i < 5; i++)
{
if(a[i] == search) // or if(*(a + i) == search)
{
printf("%d is present!\n", search);
}
}

在其他地方也进行相应的更改。

<小时/>

并且,由于您希望在找到元素后结束函数执行,因此需要使函数在找到后返回,

for(i = 0; i < 5; i++)
{
if(a[i] == search) // or if(*(a + i) == search)
{
printf("%d is present!\n", search);
return;
}
}

<小时/>顺便说一句,由于您在第一个循环中添加了 return; 语句,因此不需要进行下一次检查。因此,您的总函数应如下所示

void search_for_number(int *a, int search)
{
int i;

for(i = 0; i < 5; i++)
{
if(a[i] == search) // or if(*(a + i) == search)
{
printf("%d is present!\n", search);
return;
}
}

printf("%d is not present.\n", search);
}
<小时/>

你的main()有一个返回值,所以要添加

return 0;

main()的末尾。它可以被省略,但这是一个很好的编码实践。请参阅this .

关于c - 在数组中搜索数字 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35393512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com