C++写一个函数find(int a[] ,int n, int x),其功能是在n个数中查找某个数x,当找到这个数后返回其下标值,如果找不到,则返回-1
时间: 2023-06-03 09:03:29 浏览: 173
好的,这是一个关于函数的问题。这个函数的实现比较简单,可以使用for循环逐个遍历数组,判断是否等于目标数x,若相等则返回该位置的下标;若遍历完整个数组都没有找到目标数,则返回-1。下面是这个函数的实现:
```
int find(int a[], int n, int x) {
for (int i = 0; i < n; i++) {
if (a[i] == x) {
return i;
}
}
return -1;
}
```
请问是否还有其他问题可以帮您解答?
相关问题
用c++实现:原型为 bool Find intNum (int all,int n,int x)的函数完成如下功能:在 n 个整数中查找是否有与参数 x的值相等的数,若有则返回 True,否则返回 False。 设有两个各含 10个元素的整数集合 al和a2,编写主函数 main 和函数 Find intNum,在 main 函数中通过调用函数 Find intNum 实现这两个集合是否相等的判断。集合 al 和a2 的元素值由键盘输入,如果 al 和 a2 相等,则在屏幕输出“两个集合相等!”:否则输出“两个集合不相等!”。
以下是实现代码:
```C++
#include <iostream>
using namespace std;
bool FindIntNum(int all, int n, int x) {
for (int i = 0; i < n; i++) {
if (all == x) {
return true;
}
all++;
}
return false;
}
int main() {
int a1[10], a2[10];
cout << "请输入集合a1的元素值:" << endl;
for (int i = 0; i < 10; i++) {
cin >> a1[i];
}
cout << "请输入集合a2的元素值:" << endl;
for (int i = 0; i < 10; i++) {
cin >> a2[i];
}
bool flag = true;
for (int i = 0; i < 10; i++) {
if (!FindIntNum(a2[0], 10, a1[i])) {
flag = false;
break;
}
}
if (flag) {
cout << "两个集合相等!" << endl;
} else {
cout << "两个集合不相等!" << endl;
}
return 0;
}
```
主要思路是先定义一个函数 FindIntNum,用于在一个整数集合中查找是否有与参数 x 的值相等的数。然后在主函数中分别输入两个集合的元素值,再通过循环调用 FindIntNum 函数来判断两个集合是否相等。如果两个集合相等,则输出“两个集合相等!”,否则输出“两个集合不相等!”。
用c++设计一个函数模板find,用于对一个有序数组采用二分法查找指定数据的元素下标,用int,char数据进行测试
好的,下面是用 C++ 设计的函数模板 `find`:
```c++
#include <iostream>
template <typename T>
int find(T arr[], int size, T target) {
int left = 0;
int right = size - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
right = mid - 1;
} else {
left = mid + 1;
}
}
return -1;
}
int main() {
int arr1[] = {1, 2, 3, 4, 5, 6};
int size1 = sizeof(arr1) / sizeof(int);
int target1 = 4;
std::cout << "The target " << target1 << " is at index " << find(arr1, size1, target1) << std::endl;
char arr2[] = {'a', 'b', 'c', 'd', 'e', 'f'};
int size2 = sizeof(arr2) / sizeof(char);
char target2 = 'd';
std::cout << "The target " << target2 << " is at index " << find(arr2, size2, target2) << std::endl;
return 0;
}
```
这个函数模板接受三个参数:一个有序数组 `arr`,数组大小 `size`,和要查找的目标值 `target`。它采用二分法对数组进行查找,如果找到了目标值,就返回该值在数组中的下标;否则,返回 -1。
在 `main` 函数中,我们分别用一个 `int` 数组和一个 `char` 数组测试了这个函数模板,输出了目标值在数组中的下标。
阅读全文