问题 问答题

请编写一个函数fun(),其功能是找出一维整型数组元素中最大的值和它所在的下标,并将它们通过形参传回。数组元素中的值已在主函数中赋予。
在主函数中,x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
#include<stdlib.h>
#include<stdio.h>
void fun(int a[],int n,int *max,int *d)


main()
int i,x[20],max,index,n=10;void NONO();
for(i=0;i<n;i++)x[i]=rand()%50;printf("%4d",x[i]);)
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
NONO();

答案

参考答案:int i;
*max=a[0];*d=0; /*把数组的第1个元素值赋值给最大值变量*max*/
for(i=1;i<n;i++)
if(*max<a[i]){ /*判断*max是否小于当前值*/
*max=a[i]; /*重新把最大值赋值给*max*/
*d=i; /*记住下标*/
}

解析: 该程序的功能是求一维整型数组元素中最大的值和它所在的下标。其中求最大元素的方法:用最大值变量max标记第一个待找数据,然后逐个把所有待找数据和max进行比较,并用max标记当前最大值及其所在位置,从而找出最大值。
进入fun()函数,根据前面的分析进行如下操作。
①*max指针变量首先指向数组a的第一个数据,同时将标志位*d初始值赋为0。
②利用for循环对每一个当前数组数据与max标记的数据进行比较。
③在循环中将求得的最大数据a[i]赋值给指针变量*max,并将a[i]下标值(即“i”)赋给标志位变量*d。
[考点] 数组操作,指针操作。

选择题
单项选择题