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:} #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
这题没啥思路啊,思路都在代码中了,要是讲思路不外乎就是把每句代码都翻译一遍
那就说说你怎么做出来的呗,不然光看代码还是很懵 山迟ovo 发表于 2022-5-11 08:18
那就说说你怎么做出来的呗,不然光看代码还是很懵
我只是看了一眼,就直接填写了,发现函数里没有n这个变量,猜测是传进去的,于是修改了一下
然后就做了个测试,发现测试成功
我觉得实在是没啥了讲的,你说说你懵在哪里呢 本帖最后由 山迟ovo 于 2022-5-11 08:44 编辑
wp231957 发表于 2022-5-11 08:38
我只是看了一眼,就直接填写了,发现函数里没有n这个变量,猜测是传进去的,于是修改了一下
然后就做了 ...
我刚刚已经弄懂了!谢谢啦{:5_109:}就是说有什么比较好的思路去解?有没有什么方法啥滴 山迟ovo 发表于 2022-5-11 08:43
我刚刚已经弄懂了!谢谢啦就是说有什么比较好的思路去解?有没有什么方法啥滴
这就是传统方法,太高级的想法就不清楚了
页:
[1]