C越野车计划

时间:2018-03-07 02:21:06

标签: c

我不知道为什么这个程序说数组中没有找到5,当阵列中有5个时。此外,很少它不会输出任何printf消息。除此之外,它还能正确识别是否存在指定的数字。

感谢您的时间。

存在数字5但输出错误消息且未显示输出消息 -

Number 5 present but wrong output message and no output message displayed

#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;
        }
    }

}

1 个答案:

答案 0 :(得分:2)

findNumber的循环中,声明:

if(array[i] == array_size && array[i] != value)

导致循环打印消息,并在array[i]等于array_size时停止。在此,array[i]是数组中的元素。您可能打算测试i == array_size。但是,这也是不正确的,因为在循环内部,i永远不会等于array_sizefor语句中的控制条件为i < array_size,这意味着,如果i不小于array_size,则循环不会再执行另一次迭代。

您需要将测试更正为i == array_size并将其放在循环之后,而不是循环中。

此外,从array[i] != value语句中删除if。如果i等于array_size,则它将引用数组外的元素。