实现功能:
1.int数组元素的输入
2.int数组元素的输出
3.返回数组中最大元素的地址
4.返回数组中最小元素的地址
5.返回数组中次大元素的地址
6.交换数组中的最大值和最小值
7.进行数组元素从小到大排序
0.退出
printf("=====================================\n");
printf("1-----input\n");
printf("2-----output\n");
printf("3-----数组中最大值的地址\n");
printf("4-----数组中最小值的地址\n");
printf("5-----数组中次大值的地址\n");
printf("6-----swap(pMax,pMin)\n");
printf("7-----sort\n");
printf("0-----退出\n");
printf("请输入你的选择\n");
printf("=====================================\n");
#include<stdio.h>
#define N 5
void input (int arr[],int n);
void output (int arr[],int n);
int * pMax(int arr[],int n);
int * pMin(int arr[],int n);
void swapL(int arr[],int n);
void sortL(int arr[],int n);
int * pSecMax(int arr[],int n);
//返回数组的次大值
int * pSecMax(int arr[],int n)
{
int i = 0;
int max = arr[0];
int pmax = 0;
int sec_max = 0;
int sec_pmax = 0;
for(i = 1;i < n;i++)
{
if(arr[i] > max)
{
max = arr[i];
sec_max = max;
sec_pmax = pmax;
pmax = i;
}else if(arr[i] > sec_max)
{
sec_max = arr[i];
sec_pmax = i;
}
}
// printf("%d\n",arr[sec_pmax]);
return &arr[sec_pmax];
}
//数组元素从小到大排序
void sortL(int arr[],int n)
{
int i = 0;
int j = 0;
int temp = 0;
for(i = 0;i < n-1;i++)
{
for(j = 0;j < n-1-i;j++)
{
if(arr[j] > arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
//交换数组的最大值和最小值
void swapL(int arr[],int n)
{
int *p1 = pMax(arr,n);
int *p2 = pMin(arr,n);
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}
//返回数组的最小值地址
int * pMin(int arr[],int n)
{
int i = 0;
int *pmin = NULL;
pmin = arr;
for(i = 1;i < n;i++)
{
if(*pmin > arr[i])
{
pmin = arr + i;
}
}
return pmin;
/* int i = 0;
int min = arr[0];
int pmin = 0;
for(i = 1;i < n;i++)
{
if(arr[i] < min)
{
min = arr[i];
pmin = i;
}
}
// printf("%d\n",arr[pmin]);
return &arr[pmin];
*/
}
//返回数组的最大值地址
int * pMax(int arr[],int n)
{
int i = 0;
// int max = arr[0];
// int pmax = 0;
// for(i = 1;i < n;i++)
// {
// if(arr[i] > max)
// {
// max = arr[i];
// pmax = i;
// }
//
// }
// printf("%d\n",arr[pmax]);
// return &arr[pmax];
int *pmax = NULL;
pmax = arr;
for(i = 1;i < n;i++)
{
if(*pmax < arr[i])
{
pmax = arr + i;
}
}
return pmax;
}
//输入数组
void input (int arr[],int n)
{
int i = 0;
printf("请输入%d个数\n",n);
for(i = 0;i < n;i++)
{
scanf("%d",&arr[i]);
}
}
//输出数组
void output (int arr[],int n)
{
int i = 0;
for(i = 0;i < n;i++)
{
printf("%d\t",arr[i]);
}
printf("\n");
}
int main(void)
{
int arr[N] = {0};
int *ic = NULL;
int *is = NULL;
int *icc = NULL;
int *iswap = NULL;
int *isort = NULL;
int op = 0;
while(1)
{
printf("=======================================\n");
printf("1-----input\n");
printf("2-----output\n");
printf("3-----数组中最大值的地址\n");
printf("4-----数组中最小值的地址\n");
printf("5-----数组中次大值的地址\n");
printf("6-----swap(pMax,pMin)\n");
printf("7-----sort\n");
printf("0-----退出\n");
printf("请输入你的选择\n");
printf("=======================================\n");
scanf("%d",&op);
if(op == 0)
break;
switch(op)
{
case 1:input(arr,N);
break;
case 2:output(arr,N);
break;
case 3:ic = pMax(arr,N);
printf("%d\n",*ic);
// printf("最大值的地址为:%p\n",ic);
break;
case 4:is = pMin(arr,N);
printf("%d\n",*is);
// printf("最小值的地址为:%p\n",is);
break;
case 5:icc = pSecMax(arr,N);
printf("%d\n",*icc);
// printf("次大值的地址为:%p\n",icc);
break;
case 6:swapL(arr,N);
output(arr,N);
break;
case 7:sortL(arr,N);
output(arr,N);
break;
}
}
return 0;
}