汉扬编程 C语言入门 题解:C语言求一个数对应的二进制数中1的个数

题解:C语言求一个数对应的二进制数中1的个数

题目:给定一个十进制整数N,求其对应2进制数中1的个数

题解:C语言求一个数对应的二进制数中1的个数

输入:第一个整数表示有N组测试数据,其后N行是对应的测试数据,每行为一个整数。

输出:N行,每行输出对应一个输入。

程序:

解法一:

#include<stdio.h>

int main(void)

{

int T,s,count;

scanf(\”%d\”,&T);

while(T–){

count = 0;

scanf(\”%d\”,&s);

while(s){

if(s%2==1) count++;

s = s/2;

}

printf(\”%d\\n\”,count);

}

return 0;

}

解法二:

#include <stdio.h>

#define BASE 2

#define DIGIT 1

int CntDigit(int n, int digit)

{

int count;

count = 0;

while(n) {

if(n % BASE == digit)

count++;

n /= BASE;

}

return count;

}

int main(void)

{

int n, a;

scanf(\”%d\”, &n);

while(n–) {

scanf(\”%d\”, &a);

printf(\”%d\\n\”, CntDigit(a, DIGIT));

}

return 0;

}

解法二与解法一相比更加容易复用,宏定义和函数封装也使程序的修改更加容易不会牵一发而动全身。

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6755.html

UNIX传奇史上最关键的10位牛人,谁是你的No.1?

C语言学习篇(20)—–二维数组

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部