C语言题目 AB类数 求源代码 和详细备注

Python019

C语言题目 AB类数 求源代码 和详细备注,第1张

#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

}

A、B、C类地址的区别和划分:

1. A类IP地址

一个A类IP地址由1字节网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,

地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。

2. B类IP地址

一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址最高位必须是“10”,

地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,

每个网络能容纳6万多个主机 。

3. C类IP地址

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。

范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。

知道了上面的区别和划分,通过编程处理,就可以判断是哪一类了