2016-09-14 70 views
-3

我有一个16个整数值的数组,其中每个值都是32位,如图所示。我可以如下找到数组的最大值。如何在C中找到数组中最大的位置C

#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中完成?

+5

如果要查找最大值的位置,请将其保留为最大变量的整数。 – Winter

+0

@ Neil N.不,它不是家庭作业的一部分。而是它是我工作的一个项目的一部分。 –

+0

你写这个代码吗? – chux

回答

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

其中最大发生显示位置:

'最大=阵列[I]' 线以下,添加以下行

maxpos = i; 

(定义maxpos与其它变量之后),并更改的printf到

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

感谢您的帮助。我怎样才能找到阵列中最大值的位置。 –

+0

@ Habib.Khan你的程序已经__does__找到数组中的最大值。 –

+0

@Michael。该程序找到最大值,但我也对最大值的索引感兴趣。 –