c语言中找出一个数组中最大值,并指出其号数,如果最大值有多个怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中找出一个数组中最大值,并指出其号数,如果最大值有多个怎么办?相关的知识,希望对你有一定的参考价值。
....
float a[3],max=0;
for(i=0;i<=2;i++)
printf("Please enter the mark:");
scanf("%f",&a[i]);
if(max<a[i]) max=a[i];maxnum=i+1;
.......
printf("the number of the highest is %d\n",maxnum);
......
这样做可以找出最大值及其在数组的号码,但是假如我一个数组是10,10,1,最大值有2个,那上面的代码结果能显示最大值是10,但只能显示第一个数是最大值,但其实第二个数也是最大
这种情况请问有好的办法解决吗?但最大值有两个三个或者多个的时候都能显示出来?
if(max<a[i]) max=a[i];maxnum=i+1;改为
if(max[j]<a[i])j=0;max[j]=a[i];maxnum[j]=i+1;
else if(max[j]==a[i])j++;max[j]=a[i];maxnum[j]=i+1;
然后输出是输出max的前j+1项对应的num就是maxnum的前j+1项 参考技术B float a[3],max=0;
for(i=0;i<=2;i++)
printf("Please enter the mark:");
scanf("%f",&a[i]);
if(max<a[i]) max=a[i];maxnum=i+1;
printf("the number of the highest is %d\n",maxnum);
for(i=0;i<=2;i++)
if(max==a[i])
if(i+1!=maxnum)
printf("the number of the highest is %d\n",i+1);
也可定义一个整形数组来保存下标。最后输出。本回答被提问者采纳 参考技术C #include <stdio.h>
int main()
float a[3]=10,10,1,max=0;
int i=0,maxnum=0;
int c[3]=-1,-1,-1;
for(i=0;i<=2;i++)
if(max<a[i])
max=a[i];
c[j++] = i+1;
else if (max==a[i])
c[j++] = i+1;
for (i=0;i<3;i++)
if (c[i]!=-1)
printf("the number of the highest is a[%d]=[%.2f]\\n",c[i]-1,a[c[i]-1]);
return 0;
the number of the highest is a[0]=[10.00]
the number of the highest is a[1]=[10.00]
Press any key to continue 参考技术D 那种情况的话,最大值只有一个,但是有两个位置,所以你可以定一个和原数组一样大的数组,来装下标追问
呃...不好意思..初学者...你说的不是很懂,能具体点吗...谢谢了
以上是关于c语言中找出一个数组中最大值,并指出其号数,如果最大值有多个怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
数组中有一个数字出现次数超过数组长度一半,找出这个数字(用C语言解决)。要求时间复杂度尽量小。
C语言中怎样用指针找出一维数组中的最大值和最小值并输出它们的下标