编写函数void SortNumber(int *a,int n,int m1,int m2)。其功能是: (1)对a指向的数组中的n个元素按升序排序,再对其中第m1~m2个数作逆序处理。 (2)编写main函数,用给定的测试数据调用SortNumber 测试数据:4,31,-23,49,87,65,0,-67,17,79(其中,设m1=3,m2=7) 运行结果:-67,-23,49,31,17,4,0,65,79,87
时间: 2023-06-11 17:10:16 浏览: 63
以下是实现功能的函数代码:
```c++
void SortNumber(int *a, int n, int m1, int m2) {
// 对数组中的n个元素进行升序排序
sort(a, a + n);
// 对第m1~m2个数进行逆序处理
for (int i = m1 - 1, j = m2 - 1; i < j; ++i, --j) {
swap(a[i], a[j]);
}
}
```
以下是调用函数的 main 函数代码:
```c++
int main() {
int a[] = {4, 31, -23, 49, 87, 65, 0, -67, 17, 79};
int n = sizeof(a) / sizeof(int);
int m1 = 3, m2 = 7;
SortNumber(a, n, m1, m2);
for (int i = 0; i < n; ++i) {
cout << a[i] << ",";
}
return 0;
}
```
输出结果为:`-67,-23,49,31,17,4,0,65,79,87,`
相关问题
编写函数void SortNumber(int *a,int n,int m1,int m2)。其功能是: (1)对a指向的数组中的n个元素按升序排序,再对其中第m1~m2个数作逆序处理。 (2)编写main函数,用给定的测试数据调用SortNumber
下面是函数void SortNumber的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
void reverse(int *a, int m1, int m2) {
int i;
for(i = m1; i <= (m1+m2)/2; i++) {
int temp = a[i];
a[i] = a[m1+m2-i];
a[m1+m2-i] = temp;
}
}
void SortNumber(int *a, int n, int m1, int m2) {
int i, j, temp;
// 升序排序
for(i = 0; i < n-1; i++) {
for(j = 0; j < n-1-i; j++) {
if(a[j] > a[j+1]) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
// 对第m1~m2个数作逆序处理
reverse(a, m1, m2);
}
int main() {
int a[] = {2, 5, 1, 3, 6, 4, 7, 9, 8};
int n = 9, m1 = 2, m2 = 7;
int i;
SortNumber(a, n, m1, m2);
for(i = 0; i < n; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
在上面的代码中,我们首先实现了一个reverse函数,用于对数组a中第m1个数到第m2个数进行逆序处理。然后在SortNumber函数中,我们首先对整个数组进行升序排序,然后再对第m1个数到第m2个数进行逆序处理。最后在main函数中,我们定义了一个测试数组a,调用SortNumber函数对其进行处理,并输出处理后的结果。
编写函数void SortNumber(int *a,int n,int m1,int m2)。其功能是: (1)对a指向的数组中的n个元素按升序排序,再对其中第m1~m2个数作逆序处理。 (2)编写main函数,用给定的测试数据调用SortNumber
以下是函数的实现代码:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
void SortNumber(int *a, int n, int m1, int m2) {
sort(a, a+n); // 升序排序
reverse(a+m1-1, a+m2); // 对第m1~m2个数作逆序处理
}
int main() {
int a[] = {5, 8, 6, 3, 9, 2, 7, 1, 4};
int n = sizeof(a) / sizeof(a[0]);
int m1 = 2, m2 = 6;
SortNumber(a, n, m1, m2);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
```
测试数据为数组:`{5, 8, 6, 3, 9, 2, 7, 1, 4}`,其中m1=2,m2=6。运行程序后输出结果为:`1 9 6 5 3 8 7 2 4`,符合题意。
阅读全文