编写一个函数求数组中的最大值及下标。(要求用指针编写)

编写一个函数求数组中的最大值及下标。(要求用指针编写)
下面是我自己写的,但是在TC里面运行报错。请各位高手帮我改错。谢谢!
int y_max(int *p,int n)
{ int max=*p,i,k=0;
for(i=0;i<=n;i++)
{if(max<*(p+i))
k=i;
}
return k;
}
#define N 10
#include<stdio.h>
main()
{int a[N]={12,25,45,18,13,78,23,55,63,78}
int i,m,max;
for(i=0;i<N;i++) printf("%d",a[i]);
m=y_max(a,N);
printf("max=a[%d]=%d",m,a[m]);
}

给,都已经改好了,具体的请看注释:

int y_max(int *p,int n)
{
int max=*p,i,k=0;
for(i=0;i<n;i++) ////这里判断到i<n,而不是i<=n
{
if(max<*(p+i))
{
k=i;
max=*(p+i);////记得要在这里更新一下max的记录
}
}
return k;
}
#define N 10
#include<stdio.h>
main()
{int a[N]={12,25,45,18,13,78,23,55,63,78};////记得最后要加分号
int i,m,max;
for(i=0;i<N;i++) printf("%d ",a[i]);
m=y_max(a,N);
printf("\n\nmax=a[%d]=%d ",m,a[m]);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-25
给,都已经改好了,具体的请看注释:
int
y_max(int
*p,int
n)
{
int
max=*p,i,k=0;
for(i=0;i
main()
{int
a[N]={12,25,45,18,13,78,23,55,63,78};////记得最后要加分号
int
i,m,max;
for(i=0;i
评论
0
0
加载更多
第2个回答  2009-03-13
int y_max(int *p,int n)
{ int max=*p,i,k=0;
for(i=0;i<=n;i++)
{if(max<*(p+i))
k=i;
}
return k;
}
#define N 10
#include<stdio.h>
main()
{int a[N]={12,25,45,18,13,78,23,55,63,78} ;
int i,m,max;
for(i=0;i<N;i++) printf("%d\n",a[i]);
m=y_max(a,N);
printf("max=a[%d]=%d",m,a[m]);
}

那里少个分号

你用的编译器ms很老了。用新的随便调试一下就知道哪里出错了。比如我用的codeblocks
第3个回答  2009-03-13
for(i=0;i<=n;i++)
n应该是数组的长度,那么就应该是i<n,其他的没问题
相似回答