用C语言编程.写出一函数,求出有N个元素的整数数组的最大值及其下标。

2024-12-02 09:48:39
推荐回答(5个)
回答1:

楼主,我的程序如下。函数max读入一个n元素的数组a,返回其中最大元素的地址。这样,在调用max的函数中(这里是main),可以通过两种运算分别得到最大元素的值和它的下标(见main中注释)

#include

int *
max(int * a, int n)
{
int i;
int * p = a;

for ( i = 0; i < n; i++ )
if ( a[i] > *p )
p = a+i;
return p;
}

int
main(void)
{
int a[10];
int i;
int * ans;

printf( "Please input ten integers:\n" );
for ( i = 0; i < 10; i++ )
scanf( "%d", a+i );
ans = max(a, 10); /* ans中现在存的是数组a中最大元素的地址 */
printf( "The index is %d, the max is %d\n", ans-a, *ans );
/* ans-a求得的是最大元素的下标, *ans得到的最大元素的值 */

return 0;
}

回答2:

下面我用C++来写。
#include
using namespace std;
int max(int ,int);
int main{
int n,maxnumber;
cin>>n;
int v[];
for (int i=0;icout<<"please input number:";
cin>>v[i]}
maxnumber=v[0];
for(i=1;imaxnumer=max(matnumer,v[i]);
cout<for (int i=0;iif v[i]=maxnumber
cout<
int max(inta,intb){
return a>b?a:b}
注意:其实C++的语言和C基本上一样.

回答3:

int n;//下标值.设为全局变量
int findmax(int array[],int len)
{
int max;
max=array[0];
for(int i=1;i{
if(max{
max=array[i];
n=i;
}
}
return max;
}

回答4:

#include

int
max(int
arr[],int
n)
{
int
i;
int
row=0;
int
m
=
arr[0];
for(i=1;i{
if(arr[i]>m)
{
m=arr[i];
row=i;
}
}
return
row;
}
int
main()
{
int
arr[]={1,2,3,4,5,7,3,5,2,3};
int
maxIndex=max(arr,10);
printf("%d\t%d",maxIndex,arr[maxIndex]);
return
0;
}

回答5:

#include
void fun(int a[],int n)
{
int i,max,xiabiao;
for(i=0;iscanf("%d",&a[i]);
xiaobiao=0;
for(i=1;iif(a[i]>a[xiabiao])xiabiao=i;
max=a[xiabiao];
printf("%d %d",max,xiabiao);
}
main()
{
int array[],num;
scanf("%d",&num);
fun(array[],num);
}