山迟ovo 发表于 2022-5-11 07:33:22

C语言数组同时查找最大元素下标

本帖最后由 山迟ovo 于 2022-5-11 08:44 编辑

#include <stdio.h>
           void find(int *a,int *max,int *min)
          { int i;
          *max=*min=0;
          for(i=1;i<n;i++)
             if(a>a[*max])      (1)      ;
             else if(a<a[*min])      (2)      ;
          return;
          }
           main()
          { int a[]={5,8,7,6,2,7,3};
          int max,min;
          find(   (3)      );
          printf("%d,%d\n",max,min);
          }


1空和2空是这样写吗? if(a>a[*max])a[*max]=i;
             else if(a<a[*min])a[*min]=i;

1空和2空不是很确定,请大佬讲解一下整体思路!
谢谢{:5_108:}

wp231957 发表于 2022-5-11 08:09:53

#include <stdio.h>

void find(int *a,int *max,int *min,int n)
{
    int i;
    *max=*min=0;
    for(i=1;i<n;i++)
      if(a>a[*max])    *max=i    ;
      else if(a<a[*min])    *min=i      ;
    //return;   void还返回个毛线
}
int main()   //不要使用main()
{
    int a[]={5,8,7,6,2,7,3};
    int max,min;
    find(a,&max,&min,sizeof(a)/sizeof(int));
    printf("%d,%d\n",max,min);
    return 0;
}


/*
PS D:\001> ./w4
1,4
*/

wp231957 发表于 2022-5-11 08:13:22

这题没啥思路啊,思路都在代码中了,要是讲思路不外乎就是把每句代码都翻译一遍

山迟ovo 发表于 2022-5-11 08:18:53

wp231957 发表于 2022-5-11 08:13
这题没啥思路啊,思路都在代码中了,要是讲思路不外乎就是把每句代码都翻译一遍

那就说说你怎么做出来的呗,不然光看代码还是很懵

wp231957 发表于 2022-5-11 08:38:19

山迟ovo 发表于 2022-5-11 08:18
那就说说你怎么做出来的呗,不然光看代码还是很懵

我只是看了一眼,就直接填写了,发现函数里没有n这个变量,猜测是传进去的,于是修改了一下
然后就做了个测试,发现测试成功

我觉得实在是没啥了讲的,你说说你懵在哪里呢

山迟ovo 发表于 2022-5-11 08:43:22

本帖最后由 山迟ovo 于 2022-5-11 08:44 编辑

wp231957 发表于 2022-5-11 08:38
我只是看了一眼,就直接填写了,发现函数里没有n这个变量,猜测是传进去的,于是修改了一下
然后就做了 ...

我刚刚已经弄懂了!谢谢啦{:5_109:}就是说有什么比较好的思路去解?有没有什么方法啥滴

wp231957 发表于 2022-5-11 08:46:16

山迟ovo 发表于 2022-5-11 08:43
我刚刚已经弄懂了!谢谢啦就是说有什么比较好的思路去解?有没有什么方法啥滴

这就是传统方法,太高级的想法就不清楚了
页: [1]
查看完整版本: C语言数组同时查找最大元素下标