代码如下,如有帮助,请采纳一下,谢谢。
#include <stdio.h>
//找出数组a中的最大值和最小值
void fun(double* a,int size,double* max,double* min)
{
*max = a[0];
*min = a[0];
for (int i = 1; i <size; i++)
{
if( *(a+i) > (*max))
(*max) = *(a+i);
if( *(a+i) < (*min))
(*min) = *(a+i);
}
}
int main()
{
double a[100],min,max;
int i,n;
printf("请输入数组大小:");
scanf("%d",&n);
printf("请输入数值:");
for (i = 0; i < n; i++)
{
scanf("%lf",&a[i]);
}
fun(a,n,&max,&min);
printf("最大值:%g;最小值:%g\n",max,min);
//getchar();
//getchar();
return 0;
}
#include <stdio.h>
//通过参数返回结果
void getMaxMin(int* a, size_t len, size_t* maxIndex, size_t* minIndex)
{
int max, min;
max = min = *a;
*maxIndex = *minIndex = 0;
for (size_t i = 1; i < len; ++i)
{
if (*(a + i) > max)
{
max = *(a + i);
*maxIndex = i;
}
else if (*(a + i) < min)
{
min = *(a + i);
*minIndex = i;
}
}
}
typedef struct MyStruct
{
size_t maxIndex;
size_t minIndex;
}maxtype;
//通过返回值返回结果
maxtype getMaxMinStruct(int* a, size_t len)
{
maxtype tmp = { 0 };
/*
int max, min;
max = min = *a;
for (size_t i = 1; i < len; ++i)
{
if (*(a + i) > max)
{
max = *(a + i);
tmp.maxIndex = i;
}
else if (*(a + i) < min)
{
min = *(a + i);
tmp.minIndex = i;
}
}
//*/
//上面注释部分可以替换成下面函数调用
getMaxMin(a, len, &tmp.maxIndex, &tmp.minIndex);
return tmp;
}
int main()
{
int a[10] = { 34,6,8,7,5,63,12,14,48,29 };
size_t maxindex, minindex;
getMaxMin(a, 10, &maxindex, &minindex);
printf("max:a[%zu]=%d\nmin:a[%zu]=%d\n\n", maxindex, a[maxindex], minindex, a[minindex]);
maxtype tmp;
tmp = getMaxMinStruct(a, 10);
printf("max:a[%zu]=%d\nmin:a[%zu]=%d\n", tmp.maxIndex, a[tmp.maxIndex], tmp.minIndex, a[tmp.minIndex]);
return 0;
}