问答题
请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为:6,980 注意:部分源程序在文件PROG1.C文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1 #include<stdio.h>2 void fun(int *s,int t,int *k)3 {4 }5 main()6 {7 int a[10]={876,675,896,101,301,401,980,431,451,777},k;void NONO();8 fun(a,10,&k);9 printf(''%d,%dkn'',k,a[k]);10 NONO();11 }12 void NONO()13 {/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/14 int a[10],i,k,j;15 FILE *rf,*wf;16 rf=fopen(''in.dat'',''r'');17 wf=fopen(''out.dat'',''w'');18 for(i=0;i<10;i++) {19 for(j=0;j<10;j++)fscanf(rf,''%d'',&a[j]);20 fun(a,10,&k);21 fprintf(wf,''%d,%d\n'',k,a[k]);22 }23 fclose(rf);24 fclose(wf);}
【正确答案】正确答案:1 int i,pos=0,max=* s; 2 for(i=1; i<t; i++){ 3 if(max<*(s+i)){ 4 max=*(s+i); 5 pos=i; 6 }} 7 k=pos;
【答案解析】解析:(1)该程序功能是求最大元素在数组中的下标。它的解题思路是,用最大值变量max标记第一个待找数据,逐个把所有待找数据和max进行比较,并用pos标记其当前最大值所在位置,从而找出最大值。 (2)从已给部分源程序的main主函数开始入手,核心函数“fun(a,10,&k);”中的参数a存放着给出的整数,fun函数实现查找最大元素的下标。