c語言輸入n個二進位制數,輸出其中1的個數

時間 2021-05-05 23:33:23

1樓:冰是沉默的水

#include

#include

int main()

for(j=0;j個數

if(b[j]==1)

k++;

printf("%d",k);

getch();

}剛寫的,符合你要求吧?

2樓:匿名使用者

#include

int main()

for(j=0;j數

if(b[j]==1)

k++;

printf("%d\n",k);//1的總數for(j=0;j輸出的二進位制數

}希望對你有幫助

3樓:進蔭鬱千山

最直接的方法

(簡單的int型):

intn,sum;

sum=

0;scanf("%d",&n);

for(inti=

0;i<

sizeof(int)*8;++

i)if(n&

1<然你也可以通過2的幾次冪來做,可能效率高些。

如果資料很大,第二種方法應該更有效(比如幾十億,幾百億)

c語言如何將輸入的數表示成二進位制,並統計其中1的個數?

4樓:清水汲芮優

用我們平時十進位制轉換二進位制的演算法,即短除法。

例如:x&(x-1)

當x=5時,

5的二進位制是0101

0101

&(0101-1)

==0101

&0100

==0100

0100

&(0100-1)

==0100

&0011

==0000

一共計算了兩次,也就是說5的二進位制數一共只有2個1.

下面是**實現:

c語言,函式實現將輸入的整數表示成二進位制,並統計其中1的個數

5樓:匿名使用者

//程式沒有考慮非法輸入,但實現了要求功能#include

void convert(int n);

void convert(int n)

;while(n!=1&&n!=0)//轉換二進位制if(n!=0)

a[i]=1;

t=i;

while(i!=-1)//輸出二進位制

for(j=0;j<=t;j++)//統計1的個數printf("\n1的個數有:%d個",count);

}void main()

6樓:夜禮服假面

#include

void tenton(int n)

for(i-=1;i>=0;i--)

printf("其中

baidu1的個數

zhi為

dao : %d\n",sum);

} void main()

7樓:匿名使用者

int count = 0;

int num = 123;

int i = 0;

for (i = 0; i < 32; i++)printf("%d\n", count);

c語言程式設計:統計一個二進位制數其中1的個數???

8樓:匿名使用者

#include

char func(char ctemp)return ret;

} void main(void)

9樓:匿名使用者

int numof1(int num)

return n;

}//這裡我用的是int型,32位數,如果位數不一樣,自己改吧

c語言程式設計100例之(26):二進位制數中1的個數

10樓:百度文庫精選

內容來自使用者:文

問題描述

如果一個正整數m表示成二進位制,它的位數為n(不包含前導0),稱它為一個n位二進位制數。所有的n位二進位制數中,1的總個數是多少呢?

例如,3位二進位制數總共有4個,分別是4(100)、5(101)、6(110)、7(111),它們中1的個數一共是1+2+2+3=8,所以所有3位二進位制數中,1的總個數為8。

輸入格式

一個整數t,表示輸入資料的組數,接下來有t行,每行包含一個正整數n(1<=n<=20)。

輸出格式

對於每個n,在一行內輸出n位二進位制數中1的總個數。

輸入樣例31

23輸出樣例13

8對於輸入的n,n位二進位制數m是位數為n並且首位為1的二進位制數,且滿足:

2n-1≤n位二進位制數m<2n

因為首位為1,n位二進位制數的個數就是n-1位的0和1的組合數,即2n-1個。

第1位必須為1,所以第1位的1的個數為2n-1個。

其他n-1位,總位數為(n-1)*2n-1。其中0和1的個數是一半對一半,所以1的個數為(n-1)*2n-1/2。

合計1的位數為:2n-1 +(n-1)*2n-1/2。

因此,n位二進位制數中1的個數直接用上式計算出來。計算時,用移位運算來計算2的n次方是一種快速的計算方法。

即n位二進位制數中1的個數為:1<<(n-1)+(n-1)*(1<<(n-2))。

#include

int main()

(for (b=a; (n & (1<

c語言中計算二進位制數中1的個數

11樓:匿名使用者

因為負數 是用補碼錶示的

如 -1

計算機就是 1111 1111

符號位 是 1

>> 右移後

還是 1111 1111

12樓:滕秀愛宋辛

這個函式可抄以計數x中1的個數:

intcount_bit1(unsignedintx)

while

(x!=0);

return

(n);

}請注意這裡x必須定義為unsigned型,如果寫成有符號型,則當x是負數時》運算因符號擴充套件永遠不完。

c語言如何將輸入的數表示成二進位制,並統計其中1的個數?

13樓:藍雨瀟瀟

用我們來平時十進位制轉換自

二進位制的演算法,即短除法。

例如:x&(x-1)      當x=5時, 5的二進位制是01010101 & (0101-1)   ==   0101 & 0100 == 0100

0100 & (0100-1)   ==   0100 & 0011 == 0000

一共計算了兩次,也就是說5的二進位制數一共只有2個1.

下面是**實現:

二進位制數1的個數 問題描述 編寫c語言程式,從鍵盤讀入一個整數n,然後統計整數n所對應的二進位制數?

14樓:聽不清啊

只要把輸入的數x%2,如等於1,就計數加1;然後x/=2;重複上面的操作,直到x==0為止,這時輸出1的計數就可以了。

15樓:匿名使用者

python 語言

class solution(object):

def onecount(self,n):

num1 = int(n)

if 0 <= num1 <= 2147483647:

str_num = bin(num1)[2:] #首先把輸入的數字 轉 2 進位制

count = 0

for i in str_num:

if int(i) > 0:

count += 1

return count

else:

print("輸入的數字超出給定範圍")

if __name__ =="__main__":

solution = solution()n = input("輸入一個數字")

count = solution.onecount(n)print(count)

C語言輸入正整數n,輸出1 n,每行一個

輸入一個整數n?還是一串整數?輸入一個正整數n,再輸入n個整數,輸出最小值 c語言 include int main int i,n,t,min scanf d n 輸入。個數scanf d t 輸入第一個數min t 令最小值等於第一個數。for i 1 i下n 1個數。scanf d t if ...

c語言,要輸入n個字串怎麼輸,C語言,要輸入N個字串怎麼輸?

天方夜譚的哆啦a夢 include include include definen256 巨集定義 intmain charstrarray n 256 char str n char temp inti,n printf 請輸入字串 n for i 0 igets strarray i if st...

c語言程式要求輸入n數輸出第n個醜數醜數是

滄海雄風 include include using namespace std 遍歷法找醜數 int isugly int num 判斷是否是while num 3 0 while num 5 0 if num 1 return 1 else return 0 not an ugly number...