
// 定义函数，接收一个数组和一个整数，从数组中查找到第一个比给定的整数大的数的位置且返回。
#include <iostream>

using namespace std;

void show(int arr[], int size)
{
    int i = 0;
    while (i < size)
    {
        cout << arr[i] << " ";
        i++
    }
    cout << endl;
}

// arr[] 是 int 类型的一维数组, 此形参准备从外部接收一个 int[] 类型的数组的首地址
int find(int arr[], int n, int size)
{
    for (int i = 0; i < size; i++)
    {
        if (arr[i] > n)
            return i; // 结束循环、结束函数并返回 i
    }

    return -1;
}

int main()
{
    int arr[] = {1, 2, 3, 0, 5, 7}; // 完全初始化
    // [注意] 计算数组的长度, 在定义数组的区域可以计算, 如果作为参数传递, 就无法计算了
    // 这是因为数组作为参数传递时, 会退化为指针, 无法计算长度;
    // 如果改为指针, 就可以计算长度了, 但是指针无法初始化, 所以必须在定义时初始化
    int len = sizeof(arr) / sizeof(arr[0]);

    cout << "--- main() ---" << endl;
    show(arr, len);
    int n = 0;
    cout << "查找的数：";
    cin >> n;

    int index = find(arr, n, len);
    if (index == -1)
        cout << "没有找到" << endl;
    else
        cout << "找到了，位置是：" << index << ", 第一个比" << n << "大的数是:" << arr[index] << endl;

    return 0;
}