设计函数sortArrayByPointer,函数的功能是:使用指针实现对数组a[10]={12,5,13,25, 21,46,34,37,19,2}进行降序排序,将结果存到数组b中并输出。要求:除了定义数组a,b时,任何地方不可以使用下标法(即[]),必须使用指针;不可以改变数组a。c语言
时间: 2024-03-26 16:39:24 浏览: 53
函数指针、函数名、二维数组指针做形参
以下是实现sortArrayByPointer函数的代码:
```c
#include <stdio.h>
void sortArrayByPointer(int *a, int *b, int size) {
int *p1, *p2, temp;
for(p1 = a; p1 < a + size; p1++) {
for(p2 = p1 + 1; p2 < a + size; p2++) {
if(*p1 < *p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
}
}
}
for(int i = 0; i < size; i++) {
*(b + i) = *(a + i);
printf("%d ", *(b + i));
}
}
int main() {
int a[10] = {12, 5, 13, 25, 21, 46, 34, 37, 19, 2};
int b[10];
sortArrayByPointer(a, b, 10);
return 0;
}
```
函数sortArrayByPointer接受三个参数:指向数组a的指针、指向数组b的指针和数组大小。该函数使用双重循环遍历数组a,比较相邻两个元素的大小,如果前一个元素小于后一个元素,则交换它们的值。排序完成后,将数组a中的元素复制到数组b中,并输出数组b的元素。在函数中,指针p1和p2分别指向数组a中的元素,使用*p1和*p2访问它们的值。在复制数组a到数组b时,使用指针算术运算,即*(b + i) = *(a + i)。
阅读全文