猿问

帮忙看一下下面的代码 大一的对void的怎么返回的不是很了解

10个数找最大值,并标出是第几号

#include <stdio.h>


void fun(int *s, int t , int *k);


int main( )

{int i;

    int a[10], k ;

    for( i=0; i<10; i++)

        scanf("%d",&a[i]);

    fun(a,10,&k);

    printf("%d\n",k);

    printf("%d",a[k]);

    return 0;

}

void fun(int *s, int t , int *k)

{

    int i,min=0;

    min=s[0];

    for(i=1; i<t-1; i++)

        {

            if(s[i]<=min)

            min=s[i];

        }

    for(i=0; i<t; i++)

    {

         if(s[i]==min)

         *k=i;

    }


    return ;

}

就是min=s[i];为什么就可以返回主函数。。。。。。。。。我随便删了一个东西就打对了 提交oj(* ̄▽ ̄)y也对了 很迷茫啊


qq_叨扰_0
浏览 1249回答 3
3回答

望远

void fun(int *s, int t , int *k)//这里int *k使用了指针地址传递,当函数调用结束后用*k保存最小值的下标,所以可以直接定义为void类型for(i=1; i<t-1; i++)         {             if(s[i]<=min)             min=s[i];         } //这个for循环是寻找数组中的最小值,并将最小值保存在min中for(i=0; i<t; i++)     {          if(s[i]==min)          *k=i;     } //这个for循环是通过变量min找到对应的下标,并保存在*k中//两个for循环可以统一写成一个 *k=0; for(i=1; i<t-1; i++)         {             if(s[i]<=min)                          {                 min=s[i];                 *k=i;              }         }

qq_叨扰_0

是 最小值
随时随地看视频慕课网APP
我要回答