我不知道为什么这个程序说数组中没有找到5,当阵列中有5个时。此外,很少它不会输出任何printf
消息。除此之外,它还能正确识别是否存在指定的数字。
感谢您的时间。
存在数字5但输出错误消息且未显示输出消息 -
#include <stdio.h>
#include <stdlib.h>
void print_array(int a[], int num_elements);
int findNumber(int array[], int array_size, int value);
void main()
{
srand(time(NULL)); //Produce random numbers
int randomNums[10]; //Array of 1000 ints
int index, value;
//Populate the array with random ints from 1 to 10
int i; //Merely for looping purposes
for (i = 0; i < 10; i++) {
randomNums[i] = rand() % 10 + 1; //Random range from 1 to 10
}
print_array(randomNums, 10);
findNumber(randomNums, 10, 5);
}
void print_array(int anarray[], int num_elements)
{
int i;
for (i = 0; i < num_elements; i++)
{
printf("Element %d: %d \n", i, anarray[i]);
}
printf("\n");
}
int findNumber(int array[], int array_size, int value)
{
int i;
for (i = 0; i < array_size; i++)
{
if(array[i] == value)
{
//Number found
printf("%d found at element %d \n", value, i);
break;
}
if(array[i] == array_size && array[i] != value)
{
//Number not found
printf("%d not found \n", value);
break;
}
}
}
答案 0 :(得分:2)
在findNumber
的循环中,声明:
if(array[i] == array_size && array[i] != value)
导致循环打印消息,并在array[i]
等于array_size
时停止。在此,array[i]
是数组中的元素。您可能打算测试i == array_size
。但是,这也是不正确的,因为在循环内部,i
永远不会等于array_size
。 for
语句中的控制条件为i < array_size
,这意味着,如果i
不小于array_size
,则循环不会再执行另一次迭代。
您需要将测试更正为i == array_size
并将其放在循环之后,而不是循环中。
此外,从array[i] != value
语句中删除if
。如果i
等于array_size
,则它将引用数组外的元素。