c语言高手进来帮个忙 20
编写一个函数,找出数a[n]中最大元素和最小元素所在的下标,并返回给主调函数麻烦帮忙用c语言函数部分的知识来编一下上题的程序我编了一个,各位高手能不能帮我看一下对不对?能...
编写一个函数,找出数a[n]中最大元素和最小元素所在的下标,并返回给主调函数
麻烦帮忙用c语言函数部分的知识来编一下上题的程序
我编了一个,各位高手能不能帮我看一下对不对?能不能运行出来?
int my(int sub[])
int a[];
int i,temp1,temp2;
int max=a[0];min=a[0];
for(i=0;i<n;i++)
{if(a[i]>max){max=a[i];temp1=i;}
if(a[i]<min){min=a[i];temp2=i;}
}
return sub[]={temp1,temp2}
void main()
{int max=0;min=0;
int a[9]={123456789};
b[]=my(int sub[]);
printf("输出的下标分别为%d%d\n"b[0],b[1]);
} 展开
麻烦帮忙用c语言函数部分的知识来编一下上题的程序
我编了一个,各位高手能不能帮我看一下对不对?能不能运行出来?
int my(int sub[])
int a[];
int i,temp1,temp2;
int max=a[0];min=a[0];
for(i=0;i<n;i++)
{if(a[i]>max){max=a[i];temp1=i;}
if(a[i]<min){min=a[i];temp2=i;}
}
return sub[]={temp1,temp2}
void main()
{int max=0;min=0;
int a[9]={123456789};
b[]=my(int sub[]);
printf("输出的下标分别为%d%d\n"b[0],b[1]);
} 展开
4个回答
2008-05-19
展开全部
恕我直言,你编的这段程序错误百出,惨不忍睹!根据你编写的程序的意图和算法编写的相应程序如下:
//---------------------------------------------------------------------------
#include <stdio.h>
int *my(int *a,int n)
{
int i,max,min;
static int b[2];
max=min=a[0];
for (i = 0; i<n; i++) {
if(a[i]>max){max=a[i];b[0]=i;}
if(a[i]<min){min=a[i];b[1]=i;}
}
return b;
}
void main()
{
int a[9]={1,2,3,4,5,6,7,8,9},*b;
b=my(a,9);
printf("输出的下标分别为%d,%d\n",b[0],b[1]);
}
//---------------------------------------------------------------------------
*******************************************************
*******************************************************
1.递归函数,返回最值位置,如果有多个相同的最值,将返回靠近结尾的。
//---------------------------------------------------------------------------
#include <stdio.h>
void mo(int *a,const int n,int *max,int *min)
{
*max=a[n]>a[*max]?n:*max;
*min=a[n]>a[*min]?*min:n;
if (n) mo(a,n-1,max,min);
}
int main(void)
{
int max=0,min=0;
int a[9]={8,9,2,7,6,1,3,5,9};
mo(a,8,&max,&min);
return 0;
}
//---------------------------------------------------------------------------
2.非递归函数,返回最值位置,如果有多个相同的最值,将返回靠近开头位置的。
//---------------------------------------------------------------------------
#include <stdio.h>
void mo(int *a,const int n,int *max,int *min)
{
int i;
*max=*min=0;
for (i = 0; i<=n; i++) {
*max=a[i]>a[*max]?i:*max;
*min=a[i]<a[*min]?i:*min;
}
}
int main(void)
{
int max=0,min=0;
int a[9]={8,9,2,7,6,1,3,5,9};
mo(a,8,&max,&min);
return 0;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <stdio.h>
int *my(int *a,int n)
{
int i,max,min;
static int b[2];
max=min=a[0];
for (i = 0; i<n; i++) {
if(a[i]>max){max=a[i];b[0]=i;}
if(a[i]<min){min=a[i];b[1]=i;}
}
return b;
}
void main()
{
int a[9]={1,2,3,4,5,6,7,8,9},*b;
b=my(a,9);
printf("输出的下标分别为%d,%d\n",b[0],b[1]);
}
//---------------------------------------------------------------------------
*******************************************************
*******************************************************
1.递归函数,返回最值位置,如果有多个相同的最值,将返回靠近结尾的。
//---------------------------------------------------------------------------
#include <stdio.h>
void mo(int *a,const int n,int *max,int *min)
{
*max=a[n]>a[*max]?n:*max;
*min=a[n]>a[*min]?*min:n;
if (n) mo(a,n-1,max,min);
}
int main(void)
{
int max=0,min=0;
int a[9]={8,9,2,7,6,1,3,5,9};
mo(a,8,&max,&min);
return 0;
}
//---------------------------------------------------------------------------
2.非递归函数,返回最值位置,如果有多个相同的最值,将返回靠近开头位置的。
//---------------------------------------------------------------------------
#include <stdio.h>
void mo(int *a,const int n,int *max,int *min)
{
int i;
*max=*min=0;
for (i = 0; i<=n; i++) {
*max=a[i]>a[*max]?i:*max;
*min=a[i]<a[*min]?i:*min;
}
}
int main(void)
{
int max=0,min=0;
int a[9]={8,9,2,7,6,1,3,5,9};
mo(a,8,&max,&min);
return 0;
}
//---------------------------------------------------------------------------
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个参数保存下标,一个保存MAX一个MIN, 1个循环就可以搞定的.
MAX 和MIN初始化为a[0];
如果要复杂度简单点的,就a[n]和a[n+1]先比,大的和MAX比,小的和MIN比. for(..; ..; n+2);
MAX 和MIN初始化为a[0];
如果要复杂度简单点的,就a[n]和a[n+1]先比,大的和MAX比,小的和MIN比. for(..; ..; n+2);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int* myfuntion{
int sub[2];
int i;
int Max= 0 ,Min= 0;//
int temp1,temp2;//
for(i =0;i<n;i++){
if(a[i]>max){max = a[i];temp1 = i;}
if(a[i]<min){min = a[i];temp2 = i;}
}
return sub[] = {temp1,temp2};
}
int sub[2];
int i;
int Max= 0 ,Min= 0;//
int temp1,temp2;//
for(i =0;i<n;i++){
if(a[i]>max){max = a[i];temp1 = i;}
if(a[i]<min){min = a[i];temp2 = i;}
}
return sub[] = {temp1,temp2};
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能够返回两个值
只能写两个函数分别返回
1个函数不能反回两个值
只能写两个函数分别返回
1个函数不能反回两个值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询