问答题 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中X是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。注意:部分源程序存在文件PROGl.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 #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刚=rand()%50;printf("%4d",x[i]);} printf("\n"); fun(x,n,&max,&index); printf("Max=%5d,Index=%4d\n",max,index); NONO();} void NONO() {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE*fp,*wf; int i,x[20],max,index,n=10,j; fp=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i<10;i++){ for(j=0;j<n;j++)fscanf(fp,"%d,",&x[j]); fun(x,n,&max,&index); fprmtf(wf,"Max=%d,Index=%d\n”,max,index); } fclose(fp); fclose(wf);}
【正确答案】正确答案:inti; *max=a[0];*d=0;/*把数组的第1个元素值赋值给最大值变量*max*/ for(i=l;i<n;i++) if(*max<a[i]){/*判断*max是否小于当前值*/ *max=a[i];/*重新把最大值赋值给*max*/ *d=i: /*记住下标*/ }
【答案解析】解析:进入fun函数,根据前面的分析:*max指针变量首先指向数组a的第一个数据,同时将标志位*d初始值赋为0。然后利用for循环对每一个当前数组数据与max标记的数据进行比较。循环中将求得的最大数据a[i]赋值给*max,并将该数据项数组标志位赋给标志位*d。