设计西数sortArrayByPointer,西数的功能是:使用指针实现对数组a1101-(12,5,13,25,21,46,34,37,19,21进行降序排序,将结果存到数组b中并输出。要求:除了定义数组a,b时,任何地方不可以使用下标法(即口),必须使用指针;不可以改变数组a
时间: 2024-03-26 11:38:19 浏览: 46
好的,这是一个对数组进行降序排序的问题,可以使用指针和冒泡排序来解决。
以下是实现sortArrayByPointer的代码示例:
```c
#include <stdio.h>
void sortArrayByPointer(int *a, int *b, int n) {
int i, j, temp;
int *p, *q;
for (p = a; p < a + n - 1; p++) { // 外层循环
for (q = p + 1; q < a + n; q++) { // 内层循环
if (*p < *q) { // 降序排列
temp = *p;
*p = *q;
*q = temp;
}
}
}
for (i = 0; i < n; i++) { // 将排序后的数组存入b中
*(b + i) = *(a + i);
}
}
int main() {
int a[] = {12, 5, 13, 25, 21, 46, 34, 37, 19, 21};
int b[10];
int i;
sortArrayByPointer(a, b, 10); // 调用函数
for (i = 0; i < 10; i++) { // 输出结果
printf("%d ", *(b + i));
}
printf("\n");
return 0;
}
```
输出结果为:46 37 34 25 21 21 19 13 12 5
在该代码中,我们使用了指针来遍历数组,而不使用下标法。外层循环指针p从数组a的首元素开始,内层循环指针q从p的下一个元素开始。如果p所指的元素小于q所指的元素,就交换它们的值,这样就可以实现降序排列。
最后,我们将排序后的数组存入另一个数组b中,并输出结果。
阅读全文