问答题
请编写一个函数int fun(int*s,int t,int*k),用来求出数组的最大元素在数组中的 下标并存放在k所指向的存储单元中。 例如,输入如下整数: 876 675 896 101 301 401 980 431 45l 777 则输出结果为6,980。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 试题程序:#include < conio.h >#include < stdio.h >#include < stdlib.h >int fun(int*s,int t,int*k){}void main(){ FILE*wf; int a[10]={87 6,67 5,896,101,301,4 01,980,431,451,7 7 7},k; system("CLS"); fun(a,10,&k); print:f("%d,%d/n",k,a[k]);/*********found*********/ wf=fopen("out.dat","w"); fprintf(wf,"%d,%d",k,a[k]); fclose(wf);/******************/}
【正确答案】正确答案:int fun (int * s,int t,int *k) { int i; *k=0;/*k所指的数是数组的下标值*/ for(i=0,i < t; i++) if(s[*k] < s[i]) *k=i; /* 找到数组的最大元素,把该元素的下标赋给k所指的数*/ return s[*k];/*返回数组的最大元素*/ }
【答案解析】解析:本题中直接使用指针变量k,使用时要注意对k进行指针运算。程序一开始让k指向数组中的第一个元素,即*k =0。