//1. 设计一个函数能将一个数组中的最大值和最小值返回给调用者。
//2. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。
#include<stdio.h>
/*fun1 将得到数组的最大值和最小值,通过参数返回给调用者*/
int fun1(int arr[],int len,int *max,int *min)
{
if(len==0)
{
printf("have not data.\n");
return 1;
}
if(max==NULL || min==NULL)
{
printf("pointer error.\n");
return 2;
}
*min=*max=arr[0];
for(int i=1;i<len;i++)
{
if(*min > arr[i])
{
*min=arr[i];
continue;
}
if(*max<arr[i])
{
*max=arr[i];
continue;
}
}
return 0;
}
/*fun2 将输入十个数到数组中 */
void fun2(int arr[])
{
printf("please input 10 numbers:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&arr[i]);
}
}
/* fun3 将数组的最大值放入数组尾部,将最小值放入数组首部*/
void fun3(int arr[], int len)
{
int k_min=0;//记录最小值的位置
int k_max=len-1;//记录最大值的位置
for(int i=1;i<len-1;i++)
{
if(arr[i]<arr[k_min])
{
k_min=i;
continue;
}
if(arr[i]>arr[k_max])
{
k_max=i;
continue;
}
}
// 交换
int tmp;
tmp=arr[0];
arr[0]=arr[k_min];
arr[k_min]=tmp;
tmp=arr[len-1];
arr[len-1]=arr[k_max];
arr[k_max]=tmp;
}
/* fun4 输出数组的内容*/
void fun4(int arr[],int len)
{
printf("********处理后**********\n");
for(int i=0;i<len;i++)
printf("%d ",arr[i]);
printf("\n");
}
/*主函数*/
int main()
{
int arr[10];
int min,max;
min=max=0;
int len=sizeof(arr)/sizeof(int);
//调用函数fun2给数组赋值
fun2(arr);
// 调用fun1获得数组最值
fun1(arr,len,&max,&min);
printf("max=%d,min=%d\n",max,min);
//调用 fun3
fun3(arr,len);
// 调用fun4输出数组
fun4(arr,len);
//getchar();
//getchar();
fflush(stdout);
getchar();
getchar();
return 0;
}
参考资料:给你做参考吧,还是得自己理解为上策