AB类数 求源代码 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/08 09:45:20
AB类数 求源代码
若将一个正整数化为二进制数,在此二进制数中,我们将数字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的个数多于数字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两类数的个数.
#include<stdio.h>
typedef unsigned long u32; /* 将无符号长整型取别名为u32 */
typedef signed long s32; /* 将有符号长整型取别名为s32 */
typedef enum Boolean { /* 定义一个枚举类型,将1取名为True(真),0为False(假) */
True=1,
False=(!True)
} Boolean;
Boolean isTypeA(u32 naturalNumber); /* isTypeA函数原型 */
int main()
{
u32 i=1;
Boolean type;
s32 amountOfA=0,amountOfB=0; /* 两个变量分别统计A类数和B类数 */
while(type=isTypeA(i),i<=1000)
{
if(type)
++amountOfA;
else
++amountOfB;
++i;
}
printf("1到1000中A类数有%ld个,B类有%ld个\n",amountOfA,amountOfB);
return 0;
}
Boolean isTypeA(u32 naturalNumber)
{
u32 n=naturalNumber;
s32 numberOf0=0,numberOf1=0;
while(n>0)
{
if( 0==(n&1) ) /* 判断1个无符号数最低位为0还是为1 */
++numberOf0;
else
++numberOf1;
n=n>>1; /*向右移1位*/
}
if(numberOf1>numberOf0)
return True;
else
return False;
}
再问: 你是怎么把回答做成这种格式的?
再答: 回答框上方有一个工具条,有“加粗”“飘红”之类的,最右边是“代码语言”,选择“C/C++”即可。给分吧!
typedef unsigned long u32; /* 将无符号长整型取别名为u32 */
typedef signed long s32; /* 将有符号长整型取别名为s32 */
typedef enum Boolean { /* 定义一个枚举类型,将1取名为True(真),0为False(假) */
True=1,
False=(!True)
} Boolean;
Boolean isTypeA(u32 naturalNumber); /* isTypeA函数原型 */
int main()
{
u32 i=1;
Boolean type;
s32 amountOfA=0,amountOfB=0; /* 两个变量分别统计A类数和B类数 */
while(type=isTypeA(i),i<=1000)
{
if(type)
++amountOfA;
else
++amountOfB;
++i;
}
printf("1到1000中A类数有%ld个,B类有%ld个\n",amountOfA,amountOfB);
return 0;
}
Boolean isTypeA(u32 naturalNumber)
{
u32 n=naturalNumber;
s32 numberOf0=0,numberOf1=0;
while(n>0)
{
if( 0==(n&1) ) /* 判断1个无符号数最低位为0还是为1 */
++numberOf0;
else
++numberOf1;
n=n>>1; /*向右移1位*/
}
if(numberOf1>numberOf0)
return True;
else
return False;
}
再问: 你是怎么把回答做成这种格式的?
再答: 回答框上方有一个工具条,有“加粗”“飘红”之类的,最右边是“代码语言”,选择“C/C++”即可。给分吧!
AB类数 求源代码 若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类
MATLAB中如何将任意的二进制数变成一个n*1的矩阵,这n行的每一个数都是这个二进制数
将十进制的数88化为二进制数是
如何将二进制数化为十进制数
我们常用十进制数,计算机程序处理中使用只有数码0和1的二进制数,将二进制数10110换算成十进制应为多少
计算机利用的是二进制,它共有两个数码,0、1,将一个十进制数转化成二进制数.
请问在C语言中,如何将一个十进制数转化为八位二进制的数?
c语言中怎样将两个8位的二进制数合成为一个16位的二进制数?
日常生活中我们使用的数是十进制数,而计算机使用的数是二进制数,即数的进位方法是“逢二进一”.二进制数只使用数字0、1,如
日常生活中我们使用的数是十进制数.而计算机使用的数是二进制数,即数的进位方法是“逢二进一”.二进制数只使用数字0,1,如
C语言移位的算法,输入一个小于255的数,用移位法算出该数的二进制数中1的个数和0的个数.
计算机利用的是二进制数,它共有两个数码0、1,将一个十进制数转化为二进制数.24是转化为二制数为( )