利用指针,先排序,再进行交换。
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable:4996)
int main(){
void *input(int *p,int n);
int array[10];
int n = sizeof(array)/4;
printf("n的值是%d\n", n);
input(array,n);
printf("数组从大到小排序后:\n");
for (int i = 0; i < n; i++){
printf("%d ",*(array+i));
}
printf("将最大数和最后一个数交换,将最小数和第一个数交换后:\n");
int temp;
temp = *array;
*array = *(array + n - 1);
*(array + n - 1) = temp;
for (int i = 0; i < n; i++){
printf("%d ", *(array + i));
}
system("pause");
return 0;
}
void *input(int *p,int n){
int* sort(int *p,int n);
int *newP = p;
int *newarray;
printf("请输入10个整数:\n");
for (int i = 0; i < n;i++)
scanf("%d",p++);
printf("函数输入完成。\n");
newarray = sort(newP,n);
}
int *sort(int *p,int n){
int *tempP = p;
for (int i = 0; i < n-1; i++){
for (int j = 0; j < n - i - 1; j++, p++){
int temp = 0;
if ((*p)<*(p + 1)){
temp = *p;
*p = *(p + 1);
*(p + 1) = temp;
}
}
p = tempP;
}
return p;
}
运行结果如下: