如何在C中找到数组中最大位置

时间:2016-09-14 15:32:50

标签: c arrays

我有一个包含16个整数值的数组,其中每个值都是32位,如图所示。我可以按如下方式找到数组的最大值。

  #include <stdio.h>
  #include <conio.h>
   // main program 
int main(void){
    int i, max;
  int  array[16]; 
  array[0]=0x1;
  array[1]=0x6;
  array[2]=0x8;
  array[3]=0xC;
  array[4]=0x7;
  array[5]=0x9;
  array[6]=0xB;
  array[7]=0x0;
  array[8]=0x3;
  array[9]=0x6;
  array[10]=0x7;
  array[11]=0x6;
  array[12]=0x15;
  array[13]=0x1;
  array[14]=0x9;
  array[15]=0x3;

// calculate max 
max=array[0];

for(int i=1;i<16;i++)
{
    if(max<array[i])
    {
        max=array[i];
    }

}
printf("The max is %lx ",max);

 getch();
 return 0;

我想找到数组中最大值的位置以及最大值二进制1在最大值中的位置。可以看出,数组中位置13处的最大值为0x15,条目中最高有效二进制1的位置为5。如何在C中完成?

1 个答案:

答案 0 :(得分:1)

将此文件放在printf语句之后。并在顶部定义j。

for (j=0; j<16; j++) {
    if ((max=max>>1) == 0)  break;
}

printf("the max bit is %lx ", j);

这表示传统表示法中的位位置,其中第5位是第4位。添加“+1”以显示为第5位。

显示最大值出现的位置:

在'max = array [i]'行下面,添加以下行(在用其他变量定义maxpos之后)

maxpos = i;  

并将printf更改为

printf("The max is 0x%02x at position 0x%02x ", max, maxpos);