输出数组a中的最大值及其下标.

如题所述

可用C语言代码实现如下:

#include<stdio.h>

#define N 6

int max(int *,int);

main()

{int arry[N],i,ma;

printf("请输入数组arry:");

for(i=0;i<N;i++)

scanf("%d",&arry[i]);

ma=max(arry,N);

printf("%d\n",ma);

}

int max(int *arry,int n)

{int i,max,t,temp;

int *p;

p=arry;

for(i=0;i<n;i++)/*两两比较*/ 

{if(*(p+i)<*(p+i+1))/*如果前一个下标元素小于于后一个下标元素,把后一个下标值赋给t*/

t=i+1;

else if(*(p+i)>*(p+i+1))/*如果前一个下标元素大于后一个下标元素就实现值呼唤*/

{temp=*(p+i);

*(p+i)=*(p+i+1);

*(p+i+1)=temp;}

}

return t;/*返回t*/

}

扩展资料:

寻找最大值,可用排序算法

1、冒泡排序

依次比较相邻两元素,若前一元素大于后一元素则交换之,直至最后一个元素即为最大;然后重新从首元素开始重复同样的操作,直至倒数第二个元素即为次大元素;依次类推。如同水中的气泡,依次将最大或最小元素气泡浮出水面。

2、选择排序

首先初始化最小元素索引值为首元素,依次遍历待排序数列,若遇到小于该最小索引位置处的元素则刷新最小索引为该较小元素的位置,直至遇到尾元素,结束一次遍历,并将最小索引处元素与首元素交换;然后,初始化最小索引值为第二个待排序数列元素位置,同样的操作,可得到数列第二个元素即为次小元素;以此类推。

参考资料:

百度百科-排序算法

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-11-07
//参考代码如下: 
#include<stdio.h>
#define N 5
int main()
{
int a[N],i,max,t;
for(i=0;i<N;i++)//输入数组 
scanf("%d",&a[i]);
max=a[0];//把数组的第一个数赋值给max,此时对应的下标为0 
t=0;
for(i=1;i<N;i++)//从数组的第二个数开始判断,max是否是最大值 
if(max<a[i]){//不是最大值,就把该值赋值给max,并修改下标 
max=a[i];
t=i;

printf("最大值为:%d 其下标:%d",max,t);//数组的下标是从0开始 
return 0;
}

第2个回答  2012-01-02
#include<stdio.h>
main()
{
int a[10],i;
int max,b=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<10;i++)
{
if(a[i]>max)
{
max=a[i];
b=i;
}
}
printf("最大值为:%d",max);
printf("下标为:%d",b);
}本回答被提问者采纳
相似回答