请c语言高手进来帮我解决个问题~关于数组求最值!

来源:百度知道 编辑:UC知道 时间:2024/05/07 17:02:54
设计一个子函数f和一个主函数,子函数f对任一个
一维数组,求其最小值、次最小值及相应下标。
(1)主函数设置一个一维数组,调用子函数f,输出这个数组的最小值、次最小值及相应下标,不能使用全局变量。
(2)主函数设置一个二维数组,用这个二维数组的一行作为实在参数,调用子函数f,输出这个数组的最小值、次最小值及 相应下标,不能使用全局变量。
注:1. 一次完成;

数组求最小值和次小值
#include<stdio.h>
#define SIZE 8
void find(int a[],int size,int*p1,int*ap1,int*p2,int*ap2);
int ifmin(int a1,int a2);
main()
{
int a[SIZE]={5,15,25,76,16,45,55,35};
int min,submin,amin,asubmin;
if(SIZE<=1)
{ printf("There should be more numbers.");
return 0;}
find(a,SIZE,&min,&amin,&submin,&asubmin);
printf("The smallest is a[%d]=%d\n",min,amin);
if(submin!=-1)
printf("The subsmallest is a[%d]=%d\n",submin,asubmin);
else printf("All the numbers are the same.\n");
return 0;
}
void find(int a[],int size,int*p1,int*ap1,int*p2,int*ap2)
{
int i=1,k,j;
k=ifmin(a[0],a[1]);
while(k==0&&i<=size-2)
{i++;
k=ifmin(a[0],a[i]);} /*针对数组前几个值相等的情况*/
if(k==0)
{*ap1=a[0]; /*对应于所有值都相等的情况*/
*p1=0;
*p2=-1;}
else if(k==-1) /*先赋初值*/
{*p1=0;