请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为:6,980 注意:部分源程序在文件PROGl.C文件中

admin2019-09-02  23

问题 请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
例如,输入如下整数:876 675 896 101 301 401 980 431 451 777
则输出结果为:6,980
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h>
void fun(int*s,int t,int*k)
{
}
main()
{
int a[10]={876,675,896,101,301,401,980,431,451,777},k;voidNONO();
    fun(a,10,&k);
    printf("%d,%d\n",k,a[k]);
    NONO();
}
void NONO()
{/*本函数用于打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/
  int a[10],i,k,j;
  FILE*rf,*wf;
  rf=fopen("in.dat","r");
  wf=fopen("out.dat","w");
  for(i=0;i<10;i++){
    for(j=0;j<10;j++) fscanf(rf,"%d",&a[j]);
    fun(a,10,&k);
fprintf(wf,"%d,%d\n",k,a[k]);
  }
  fclose(rf);
  fclose(wf);}

选项

答案int i,pos=0,max=*s; for(i=1;i<t;i++){ if(max<*(s+i)){ max=*(s+i); pos=1; }} *k=pos;

解析 (1)该程序功能是求最大元素在数组中的下标。它的解题思路是,用最大值变量max标记第一个待找数据,逐个把所有待找数据和max进行比较,并用pos标记其当前最大值所在位置,从而找出最大值。
(2)从已给部分源程序的main主函数开始入手,核心函数“fun(a,10,&k);”中的参数a存放着给出的整数,fun函数实现查找最大元素的下标。
转载请注明原文地址:https://kaotiyun.com/show/WORp777K
0

最新回复(0)