一道c语言编程题 在线等!

若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。例如:(13)10=(1101)2其中1的个数... 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。

例如:(13)10=(1101)2

其中1的个数为3,0的个数为1,则称此数为A类数;

(10)10=(1010)2

其中1的个数为2,0的个数也为2,称此数为B类数;

(24)10=(11000)2

其中1的个数为2,0的个数为3,则称此数为B类数;

程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数。

输入一个数,求出1到这个数之间的AB类数

输出一行输出两个数,空格隔开。
展开
 我来答
希声和寡
2011-12-16 · TA获得超过2.6万个赞
知道大有可为答主
回答量:6437
采纳率:25%
帮助的人:3122万
展开全部
#include<stdio.h>
#include<stdlib.h>

void NumberOf1and0_Solution(int i,int* count0,int* count1)
{
*count0 = 0;
*count1 = 0;

while(i)
{
if(i & 1)
*count1+=1;
else *count0+=1;

i = i >> 1;
}
}

void main()
{
int N,countA=0,countB=0;
int nZero,nOne,i;

for(i=1;i<=1000;i++)
{
NumberOf1and0_Solution(i,&nZero,&nOne);

if(nOne>nZero) countA++;
else countB++;
}

printf( "1~1000之间,A类数有%d个,B类数有%d个\n",countA,countB);
system( "pause ");
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式