qfedu-basic-level/day9/d5.cpp

51 lines
1.4 KiB
C++

// 定义函数,接收一个数组和一个整数,从数组中查找到第一个比给定的整数大的数的位置且返回。
#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;
}