编写c++函数求数组中第一次出现的负数及其下标
时间: 2024-03-17 21:46:53 浏览: 68
下面是一个示例代码,用于实现这个功能:
```c++
#include <iostream>
using namespace std;
int find_first_negative(int arr[], int n) {
for (int i = 0; i < n; i++) {
if (arr[i] < 0) {
return i;
}
}
return -1;
}
int main() {
int arr[] = {2, 4, -6, 8, -10, 12};
int n = sizeof(arr) / sizeof(arr[0]);
int index = find_first_negative(arr, n);
if (index == -1) {
cout << "没有找到负数!" << endl;
} else {
cout << "第一个负数为:" << arr[index] << ",下标为:" << index << endl;
}
return 0;
}
```
该程序接受一个整数数组以及数组的大小作为输入,并返回数组中第一个负数的下标。如果数组中没有负数,则返回-1。程序先定义了一个find_first_negative函数,该函数遍历整个数组,找到第一个负数并返回其下标。然后在主函数中调用此函数,并输出找到的负数及其下标。
相关问题
【问题描述】编写函数求数组中第一次出现的负数及其下标,函数通过指针变量做参数返回满足条件的数组元素值及其下标,如果数组中不存在负数,均返回-1。函数头部已经给出,请将函数体补充完整。 【输入形式】输入8个数,用空格分开 【输出形式】输出满足条件的元素值和下标 【样例输入】9 -8 75 8 34 2 12 6 【样例输出】-8,1
下面是一个示例代码,用于实现这个功能:
```c++
#include <iostream>
using namespace std;
void find_first_negative(int arr[], int n, int* pvalue, int* pindex) {
for (int i = 0; i < n; i++) {
if (arr[i] < 0) {
*pvalue = arr[i];
*pindex = i;
return;
}
}
*pvalue = -1;
*pindex = -1;
}
int main() {
int arr[8];
for (int i = 0; i < 8; i++) {
cin >> arr[i];
}
int value, index;
find_first_negative(arr, 8, &value, &index);
if (index == -1) {
cout << "不存在负数!" << endl;
} else {
cout << value << "," << index << endl;
}
return 0;
}
```
该程序接受一个整数数组以及数组的大小作为输入,并通过指针变量返回数组中第一个负数的值和下标。如果数组中不存在负数,则返回值和下标均为-1。程序定义了一个find_first_negative函数,该函数遍历整个数组,找到第一个负数,并将其值和下标通过指针参数返回。然后在主函数中调用此函数,并输出找到的负数及其下标。注意指针变量的使用方式。
C++vector数组指定数组范围排序
可以使用标准库函数 `qsort` 进行排序,需要自定义一个比较函数来指定排序规则。
比如,对于一个 `int` 类型的数组 `arr`,要对其中从下标 `left` 到下标 `right` 之间的元素进行升序排序,可以这样实现:
```c
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
void sort_range(int *arr, int left, int right) {
qsort(arr + left, right - left + 1, sizeof(int), cmp);
}
```
其中,`cmp` 函数返回值为负数表示 `a` 应该排在 `b` 前面,返回值为正数表示 `a` 应该排在 `b` 后面,返回值为 0 表示 `a` 和 `b` 相等。
`sort_range` 函数中,`qsort` 函数的第一个参数是指向要排序的数组第一个元素的指针,需要加上 `left` 才能指向指定的范围;第二个参数是要排序的元素个数,即 `right - left + 1`;第三个参数是每个元素的大小,即 `sizeof(int)`;第四个参数是比较函数的指针,即 `cmp`。
调用方式如下:
```c
int arr[] = {9, 2, 5, 7, 3};
int left = 1, right = 3;
sort_range(arr, left, right);
```
这样就可以将 `arr` 数组中下标从 `left` 到 `right` 的元素排序,结果为 `{9, 2, 5, 7, 3}` 变为 `{9, 2, 3, 5, 7}`。
阅读全文