给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。(随机生产n个整数范围在1~100)如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出—1。例如输入整数℅随机产生:194839,产生的随机数打印出来,再次输入其中的一个随机数,如下输入9输出 2
时间: 2023-05-23 20:03:10 浏览: 567
可以使用以下代码来解决这个问题:
```
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n, a;
std::cin >> n;
std::vector<int> nums(n);
for (int i = 0; i < n; ++i) {
nums[i] = rand() % 100 + 1;
}
std::sort(nums.begin(), nums.end());
std::cin >> a;
auto it = std::lower_bound(nums.begin(), nums.end(), a);
if (it != nums.end() && *it == a) {
std::cout << it - nums.begin() + 1 << std::endl;
} else {
std::cout << -1 << std::endl;
}
return 0;
}
```
这个程序会首先生成一个长度为n的随机数列,然后将它从小到大排序。接着,读入需要查找的数a,并使用`std::lower_bound`在有序数列中查找a。如果a存在于数列中,`std::lower_bound`返回指向a的迭代器,减去数列起始位置的迭代器可以得到a在数列中的下标,并加1即为其出现的位置;否则输出-1。
示例输入:
```
10
9
```
示例输出:
```
3
```
阅读全文