c语言从键盘输入10个整数,将其中最小的数与第一个数交换,最大的一个数与最后一个数交换。写3个函数

2024-12-02 10:32:48
推荐回答(1个)
回答(1):

#include "stdio.h"
void max_min(int *a,int index,int end); //声明函数
void main(){
int a[10],i; //定义数组a用来存储10个整数
for(i=0;i<10;i++) //输入10个整数
scanf("%d",&a[i]);
for(i=0;i<10;i++) //输出交换前的数组a的元素
printf("%d ",a[i]);
printf("\n");
max_min(a,0,9); //调用查找并交换最大最小值
for(i=0;i<10;i++) //输出交换后的数组a的元素
printf("%d ",a[i]);
printf("\n");
}

void max_min(int *a,int index,int end){
int *indexp,*endp,*temp,*maxp,*minp; //分别定义指向第一个元素、指向最后一个元素、临时、
//指向最大、指向最小的指针变量
indexp=(int *)malloc(sizeof(int)); //给指针们分配存储空间
endp=(int *)malloc(sizeof(int));
temp=(int *)malloc(sizeof(int));
maxp=(int *)malloc(sizeof(int));
minp=(int *)malloc(sizeof(int));
*indexp=index; //给指针们初始化
*endp=end;
*maxp=*indexp;
*minp=*endp;

for(int i=0;i<=*endp;i++){ //查找最大最小值
if(a[*maxp]if(a[*minp]>a[i]) *minp=i;
}

*temp=a[*indexp]; //把最小值与第一个元素交换
a[*indexp]=a[*minp];
a[*minp]=*temp;

*temp=a[*endp]; //把最大值与最后一个元素交换
a[*endp]=a[*maxp];
a[*maxp]=*temp;

free(indexp); //给指针们释放空间
free(endp);
free(maxp);
free(minp);
free(temp);
}