2016-09-14 61 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。該程序找到最大值,但我也對最大值的索引感興趣。 –

相關問題